home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / applic~1 / ss133st.zoo / ss_133 / ss.1 < prev    next >
Encoding:
Text File  |  1994-05-15  |  75.9 KB  |  2,113 lines

  1.  
  2.  
  3.  
  4. SS 1.3.3 (1)                         SS    1.3.3 (1)
  5.  
  6.  
  7. N✓NA✓AM✓ME✓E
  8.        ss - simple spreadsheet program
  9.  
  10. S✓SY✓YN✓NO✓OP✓PS✓SI✓IS✓S
  11.        s✓ss✓s [ -✓-c✓c ] [ -✓-m✓m ]    [ -✓-r✓r ] [ -✓-o✓o ] [    -✓-x✓x ] [ -✓-C✓C ] [ -✓-R✓R ] [ -✓-L✓L    ]
  12.        [ _✓f_✓i_✓l_✓e ]
  13.  
  14. D✓DE✓ES✓SC✓CR✓RI✓IP✓PT✓TI✓IO✓ON✓N
  15.        _✓s_✓s is a spreadsheet program (big    surprise!).
  16.  
  17.        It is not another Lotus    1-2-3(tm)  or  Excel(tm)  or  etc
  18.        spreadsheet  program that consumes megabytes of disk space
  19.        and is full of whiz-bang    graphics and fonts and so on  and
  20.        so  forth that the average user (IMHO) needs and    uses only
  21.        infrequently.
  22.  
  23.        _✓s_✓s is a character based program that  should  run  on  any
  24.        standard     ASCII    terminal.   It    is  based  on rectangular
  25.        tables much like    a financial spreadsheet.  When invoked it
  26.        presents    you with a table organized as rows and columns of
  27.        cells - just like any ``normal''    spreadsheet program.
  28.  
  29. O✓OP✓PT✓TI✓IO✓ON✓NS✓S
  30.        -✓-c✓c     Start the    program    with input method set to 'CR ter-
  31.           minated'.     (See below)
  32.  
  33.        -✓-m✓m     Start the    program    with automatic recalculation dis-
  34.           abled.  The spreadsheet will be  recalculated  only
  35.           when the recalc command (see below) is used.
  36.  
  37.        -✓-r✓r     Start the    program    with the recalculation being done
  38.           in row order (default option).
  39.  
  40.        -✓-o✓o     Start the    program    with the recalculation being done
  41.           in column    order.
  42.  
  43.        -✓-x✓x     Cause the    data files to be decrypted/encrypted when
  44.           read/written.  (This option may not be available at
  45.           your  site,  depending  on the capabilities of your
  46.           computer system, check with your system administra-
  47.           tor.)
  48.  
  49.        -✓-R✓R     Start the    program    with automatic newline action set
  50.           to increment the row (see    below).
  51.  
  52.        -✓-C✓C     Start the    program    with automatic newline action set
  53.           to increment the column (see below).
  54.  
  55.        -✓-L✓L     Start the    program    with automatic newline action set
  56.           to move in whatever direction the    cell-cursor  last
  57.           moved (see below).
  58.  
  59.        f✓fi✓il✓le✓e   If  invoked  without  a _✓f_✓i_✓l_✓e argument, the table is
  60.           initially    empty.    Otherwise _✓f_✓i_✓l_✓e is read in.
  61.  
  62.  
  63.  
  64.                                 1
  65.  
  66.  
  67.  
  68. SS 1.3.3 (1)                         SS    1.3.3 (1)
  69.  
  70.  
  71.        All of these options can    also be    changed    from  within  _✓s_✓s.
  72.        Those  changes will then    be saved when the current spread-
  73.        sheet is    saved, and reloaded when that spreadsheet is read
  74.        in  from    disk.  Options specified when _✓s_✓s is invoked over-
  75.        ride options saved in the data file.
  76.  
  77. I✓IN✓NT✓TR✓RO✓OD✓DU✓UC✓CT✓TI✓IO✓ON✓N
  78.        _✓s_✓s is based upon    the well-known (?)  public domain spread-
  79.        sheet program ``s✓sc✓c'', version 6.19.
  80.  
  81.        _✓s_✓s  is an ``un-moded'' program.    It does    not have separate
  82.        input and output    modes that you toggle between.    To  enter
  83.        numbers    into your spreadsheet, go ahead    and start typing.
  84.        You can enter text the same way,    just do    it  (more  detail
  85.        on these    operations below).
  86.  
  87.        If  your     keyboard has Arrow keys and/or    Page-Up    and Page-
  88.        Down keys, they should work as you expect  them    too.   If
  89.        they  don't,  talk  to  whomever    installed this program on
  90.        your system, it could be    a simple  terminfo/termcap  prob-
  91.        lem.   If your keyboard doesn't have cursor movement keys,
  92.        relax.  When you    use _✓s_✓s you can also use    the  same  cursor
  93.        movement    commands as emacs  (more on that below,    also).
  94.  
  95.        There  are a wide selection of financial    and other ``stan-
  96.        dard'' spreadsheet functions that you can use.    They  are
  97.        listed  and explained in    detail below.  (Wow, sure must be
  98.        a lot of    stuff below!)
  99.  
  100.        Finally,    instead    of forcing you to memorize bazillions  of
  101.        different commands, _✓s_✓s places most operations (Save, Move,
  102.        etc) in menus.  These menus are probably    vaguely     familiar
  103.        to  you,     since they were inspired by a certain well-known
  104.        DOS spreadsheet program.     Go ahead,  hit     the  ``/''  key.
  105.        You  probably  will  figure  many  things out without even
  106.        reading on in this man page.
  107.  
  108.        However,    you probably  should  read  on,     because  there's
  109.        lot's  to  learn.  I'd also hate    to have    typed all this in
  110.        for nothing!  :-)
  111.  
  112.        NOTE: This man page assumes that    the reader has a  general
  113.        familiarity with    spreadsheet programs.
  114.  
  115.    S✓Sc✓cr✓re✓ee✓en✓n L✓La✓ay✓yo✓ou✓ut✓t
  116.        The  screen is divided into four    regions.  The top line is
  117.        for entering commands/data  and    displaying  cell  values.
  118.        The  second  line is for    messages from _✓s_✓s.  The third line
  119.        and the first four columns show the column  and    row  num-
  120.        bers,  from which are derived cell addresses, e.g.  _✓A_✓0 for
  121.        the cell    in column A, row 0.  Note that column  names  are
  122.        case-insensitive: Entering _✓A_✓0 is    equivalent to _✓a_✓0.
  123.  
  124.        The rest    of the screen forms a window looking at    a portion
  125.  
  126.  
  127.  
  128.                                 2
  129.  
  130.  
  131.  
  132. SS 1.3.3 (1)                         SS    1.3.3 (1)
  133.  
  134.  
  135.        of the table.  The total    number of table    rows and  columns
  136.        displayed  is  set  by  _✓c_✓u_✓r_✓s_✓e_✓s(3) and may be overridden by
  137.        setting    the  LINES  and     COLUMNS  environment  variables,
  138.        respectively.
  139.  
  140.           [     Note to X-Windows users; Yes you can resize your
  141.           terminal windows.     The next time a command is  pro-
  142.           cessed,  or  the    screen is redrawn, _✓s_✓s will figure
  143.           things out and adjust itself. ]
  144.  
  145.        The screen has three cursors:  a    cell cursor, indicated by
  146.        a  highlighted cell and a ``<'' on the screen, a    menu cur-
  147.        sor, indicated by a highlighted menu  item  (it    functions
  148.        much  like the cell cursor), and    a character cursor, indi-
  149.        cated by    the terminal's hardware     cursor.   The    cell  and
  150.        character  cursors  are    often the same.     They differ when
  151.        you type    a command on the top line.
  152.  
  153.        If a cell's numeric value is wider than the column  width,
  154.        the  cell  is  filled  with  asterisks.    If a cell's label
  155.        string is wider than the    column width, it is truncated  at
  156.        the start of the    next non-blank cell in the row,    if any.
  157.  
  158.    H✓Ho✓ow✓w I✓In✓np✓pu✓ut✓t I✓Is✓s    P✓Pr✓ro✓oc✓ce✓es✓ss✓se✓ed✓d
  159.        Let's  assume  that  you    have just started _✓s_✓s, so that you
  160.        are at the ``top-level''    of input processing.  You enter    a
  161.        keystroke;  a number or letter, arrow key or function key.
  162.        The program reads your input and    processes it as    follows:
  163.  
  164.        C✓Co✓on✓nt✓tr✓ro✓ol✓l-✓-k✓ke✓ey✓y,✓, A✓Ar✓rr✓ro✓ow✓w k✓ke✓ey✓y,✓, o✓or✓r F✓Fu✓un✓nc✓ct✓ti✓io✓on✓n k✓ke✓ey✓y
  165.           The appropriate function is  performed   (ie:  Move
  166.           the cursor to the    next row).  See    the section below
  167.           entitled C✓CO✓OM✓MM✓MA✓AN✓ND✓DS✓S.
  168.  
  169.        `✓`/✓/'✓'    The main top-level menu is displayed and    the  pro-
  170.           gram  enters  ``menu-mode''.  See    the section below
  171.           entitled M✓ME✓EN✓NU✓US✓S.
  172.  
  173.        `✓`0✓0-✓-9✓9'✓',✓,`✓`-✓-'✓',✓,`✓`.✓.'✓',✓,`✓`+✓+'✓',✓,`✓`@✓@'✓'
  174.           It is assumed that you are entering a number (or    a
  175.           numeric  function,  in  the  case    of `@'), into the
  176.           current cell.
  177.  
  178.        `✓`=✓='✓'    This is retained for compatibility  with    ``sc''    .
  179.           It signals that you wish to enter    a number/function
  180.           in the current cell.
  181.  
  182.        `✓`"✓"'✓',✓,`✓`>✓>'✓',✓,`✓`<✓<'✓'
  183.           These characters indicate    that you want to enter    a
  184.           centered     ("),    right-justified      (>),    or  left-
  185.           justified      (<)    string     (or    string      expres-
  186.           sion/function) into the cell.
  187.  
  188.           Note  that  when    entering a string, a double quote
  189.  
  190.  
  191.  
  192.                                 3
  193.  
  194.  
  195.  
  196. SS 1.3.3 (1)                         SS    1.3.3 (1)
  197.  
  198.  
  199.           (") is placed at the start  of  the  input  window.
  200.           This is so the program can distinguish between con-
  201.           stant strings (eg: "Beam Me Up!")    and string  func-
  202.           tions  or     expressions  (eg: @date(@now) ).  If you
  203.           are entering a string  constant,    just  ignore  the
  204.           double  quote  and  enter     your  string.    A closing
  205.           quote is not  required.    If  you     are  entering    a
  206.           string  function,     just backspace    over the quote to
  207.           delete it, and then enter    your function.
  208.  
  209.        D✓De✓ef✓fa✓au✓ul✓lt✓t:✓:
  210.           The entry    of any other character is taken    to  be    a
  211.           signal  that  you     wish  to  enter a left-justified
  212.           string.  Unlike the previous item, in this instance
  213.           no  double  quote     is  placed  in    the input buffer.
  214.           This is nice, since most of the time you enter text
  215.           this  way,  and  don't have to deal with the double
  216.           quote.
  217.  
  218. M✓ME✓EN✓NU✓US✓S
  219.        The main    (top-level) menu is invoked with the `/' key.
  220.  
  221.        Menus are displayed on the top line of the  screen.   Each
  222.        menu  item  is  usually    one  (hopefully    self-explanatory)
  223.        word.  Each menu    item begins with  a  single  letter  (eg:
  224.        ``F:File'').
  225.  
  226.        The  left-most  item  in     a menu    is initially highlighted.
  227.        This is the ``menu-cursor''.    By  using  the  left/right
  228.        arrow  keys  (or    ^B/^F),    the menu cursor    can be moved left
  229.        and right.  As each menu    item is    highlighted,  a     one-line
  230.        description  of    that  command  is displayed on the second
  231.        line.  Typing return will execute the  currently     selected
  232.        menu item.
  233.  
  234.        There  is  also    a  short-cut for choosing menu items:  By
  235.        typing the key corresponding to the first  letter  in  any
  236.        menu  item-  case  is unimportant - you immediately select
  237.        that menu item.
  238.  
  239.        I tried to have all  the     highlighted  letters  match  the
  240.        first  letter  of their menu item, but unfortunately there
  241.        had to be a few exceptions.  Watch for those!
  242.  
  243.        By entering <Delete> or <Backspace>, (your choice) you can
  244.        back up one menu    level.
  245.  
  246.        By  typing a <Space> you    will abort out of a menu (no mat-
  247.        ter how deep you    are into sub-menu's)  back  to    the  top-
  248.        level of    the program.
  249.  
  250.    M✓Ma✓ai✓in✓n    M✓Me✓en✓nu✓u
  251.        F✓F:File  E✓E:Edit C✓C:Cell R✓R:Row O✓O:Column V✓V:View I✓I:Input M✓M:Misc
  252.        Q✓Q:Quit N✓N:Name
  253.  
  254.  
  255.  
  256.                                 4
  257.  
  258.  
  259.  
  260. SS 1.3.3 (1)                         SS    1.3.3 (1)
  261.  
  262.  
  263.        With the    exception of Q✓Qu✓ui✓it✓tandN✓Na✓am✓me✓e,✓, all menu items  on  the
  264.        Main Menu invoke    sub-menus.  See    below for explanations of
  265.        those.
  266.  
  267.        _✓Q_✓u_✓i_✓t   Exit from    the program.   If  there  have    been  any
  268.           changes  in  the spreadsheet since the last Load or
  269.           Save command, _✓s_✓s asks about saving your data before
  270.           exiting.
  271.  
  272.        _✓N_✓a_✓m_✓e   Display the current filename.
  273.  
  274.    F✓Fi✓il✓le✓e    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  275.        L✓L:Load    M✓M:Merge      S✓S:Save   A✓A:SaveA✓As✓s   W✓W:Write  txt  T✓T:Tbl
  276.        save(_✓m_✓o_✓d_✓e) Q✓Q:Quit
  277.  
  278.        _✓L_✓o_✓a_✓d   Load a new spreadsheet file from disk.   Enter  the
  279.           name  of    a  spreadsheet    file to    load, followed by
  280.           <CR>.   If  encryption  is  enabled,  the     file  is
  281.           decrypted    before it is loaded into the spreadsheet.
  282.  
  283.           NOTE: _✓s_✓s files are (currently) identical to  ``sc''
  284.           data files.
  285.  
  286.        _✓M_✓e_✓r_✓g_✓e  Merge  the spreadsheet from the named file into the
  287.           current one.  Values and expressions defined in the
  288.           named  file  are read into the current spreadsheet,
  289.           overwriting the existing entries at  matching  cell
  290.           locations.
  291.  
  292.        _✓S_✓a_✓v_✓e   Save  the     current  spreadsheet  into  a    file.  If
  293.           encryption is enabled, the file is encrypted before
  294.           it is saved.
  295.  
  296.        _✓S_✓a_✓v_✓e _✓A_✓s
  297.           Prompt  the user to enter    a filename, and    then save
  298.           the spreadsheet into a file with that name.   If    a
  299.           <CR>  is    entered,  the current default filename is
  300.           used.  The newly entered filename    becomes     the  new
  301.           default  filename.   If  encryption is enabled, the
  302.           file is encrypted    before it is saved.
  303.  
  304.        _✓W_✓r_✓i_✓t_✓e _✓T_✓x_✓t
  305.           Write a text-only    listing    of  the     current  spread-
  306.           sheet  (No  functions,  etc)  into a file    in a form
  307.           that matches its appearance on the screen.
  308.  
  309.           This differs from    the  ``Save''  commands     in  that
  310.           files  saved with    those commands are intended to be
  311.           reloaded with ``Load'', while  ``Write  txt''  pro-
  312.           duces a file for people to look at.  Hidden rows or
  313.           columns are not shown when the data is printed.
  314.  
  315.        _✓T_✓a_✓b_✓l_✓e _✓S_✓a_✓v_✓e
  316.           Write  a     text-only   listing   of   the      current
  317.  
  318.  
  319.  
  320.                                 5
  321.  
  322.  
  323.  
  324. SS 1.3.3 (1)                         SS    1.3.3 (1)
  325.  
  326.  
  327.           spreadsheet to a file, but include delimiters suit-
  328.           able for processing by  the  _✓t_✓b_✓l,     _✓L_✓a_✓T_✓e_✓X,     _✓T_✓e_✓X,  or
  329.           _✓F_✓r_✓a_✓m_✓e_✓M_✓a_✓k_✓e_✓r table processors.
  330.  
  331.           The  _✓t_✓b_✓l_✓s_✓t_✓y_✓l_✓e  option (see the ``Table Style'' item
  332.           on the Misc menu)     controls  which  delimiters  are
  333.           output.    The  current  setting of _✓t_✓b_✓l_✓s_✓t_✓y_✓l_✓e is dis-
  334.           played in    parentheses after the ``Tbl Save''  entry
  335.           of  the  File  menu.  A question mark (?)    indicates
  336.           that no style has    been defined (style 0).
  337.  
  338.        _✓Q_✓u_✓i_✓t   Exit from    the program.  This option is identical to
  339.           the  Quit    option on the main top-most menu.  (Actu-
  340.           ally the Quit option on the main top-most     menu  is
  341.           identical    to _✓t_✓h_✓i_✓s    option,    but that really    is irrel-
  342.           evant).
  343.  
  344.        With the    ``Save'', ``Write Text'', and ``Table Save'' com-
  345.        mands,  it is possible to save a    subset of the spreadsheet
  346.        to the output file.  To do that,    a _✓r_✓a_✓n_✓g_✓e    must  be  defined
  347.        prior  to  invoking those commands.  See    the section below
  348.        on Ranges, for instructions on defining a range.
  349.  
  350.        With the    ``Write    Text'' and ``Table  Save''  commands,  if
  351.        you try to write    to the filename    used with the most recent
  352.        ``Load''    or ``Save/Save As''  commands,    or  to    the  file
  353.        specified on the    command    line when _✓s_✓s was invoked, you are
  354.        asked to    confirm    that the (potentially)    dangerous  opera-
  355.        tion is really what you want.
  356.  
  357.        The  four output    commands, (``Save'', ``Save As'', ``Write
  358.        Text'' and ``Table Save''), can    pipe  their  (unencrypted
  359.        only) output to a program.  To use this feature,    enter ``|
  360.        program'' to the    prompt asking for a filename.  For  exam-
  361.        ple,  to    redirect the output of the ``Write Text'' command
  362.        to the printer, you might enter ``| lpr -p''.
  363.  
  364.    E✓Ed✓di✓it✓t    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  365.        C✓C:Copy  E✓E:Erase    N✓N:Name    L✓L:Lock    U✓U:Unlck     F✓F:Format  I✓I:Fill
  366.        V✓V:Valueize
  367.  
  368.        _✓C_✓o_✓p_✓y   Copy  a  source  range to    a destination range.  The
  369.           source and destination may be different sizes.  The
  370.           result  is  always  one  or more full copies of the
  371.           source.  Copying a row  to  a  row  yields  a  row.
  372.           Copying  a  column  to  a     column     yields    a column.
  373.           Copying a    range to anything yields a range.   Copy-
  374.           ing a row    to a column or a column    to a row yields    a
  375.           range with as many copies    of the    source    as  there
  376.           are  cells in the    destination.  This command can be
  377.           used to duplicate    a cell through an arbitrary range
  378.           by  making  the  source a    single cell range such as
  379.           _✓b_✓2_✓0_✓:_✓b_✓2_✓0.
  380.  
  381.  
  382.  
  383.  
  384.                                 6
  385.  
  386.  
  387.  
  388. SS 1.3.3 (1)                         SS    1.3.3 (1)
  389.  
  390.  
  391.           The Source Range must be defined    before    selecting
  392.           this command.  You will be prompted to enter a des-
  393.           tination range.
  394.  
  395.           _✓B_✓U_✓G_✓: You MUST enter a range, and the range WILL  be
  396.           copied.    If  you     want to abort this operation the
  397.           only current solution  is     to  select  your  source
  398.           range  to     also  be  your     destination range.  Then
  399.           there will be a net effect of zero.  This    should be
  400.           addressed    in the next release.
  401.  
  402.        _✓E_✓r_✓a_✓s_✓e  Clear a range.  Cells cleared with this command may
  403.           be recalled with the ``Yank'' or ``Merge'' commands
  404.           under  the  Row  or  Column  menus.   (This  is, of
  405.           course, less than    ideal -    this  awkwardness  is  an
  406.           example  of some of the problems that arose in con-
  407.           verting from ``sc''.)
  408.  
  409.        _✓N_✓a_✓m_✓e   Invoke the Name sub-menu.
  410.  
  411.        _✓L_✓o_✓c_✓k   This command will    lock the current  cell    --  or    a
  412.           range  of     cells,    if a range of cells is specified.
  413.           Locking will make    them immune to any type    of  edit-
  414.           ing. A locked cell can't be changed in anyway until
  415.           it is unlocked.
  416.  
  417.        _✓U_✓n_✓L_✓o_✓c_✓k In light of the previous command,    the necessity  of
  418.           this  command is obvious.     This command will unlock
  419.           a    locked cell and    make it    editable.
  420.  
  421.        _✓F_✓o_✓r_✓m_✓a_✓t Use this command to assign a value format    string to
  422.           a     range    of  cells.   See the section ``Formatting
  423.           Cell Contents'' for details.
  424.  
  425.        _✓F_✓i_✓l_✓l   Fill a range with    constant values    starting  with    a
  426.           given  value  and     increasing by a given increment.
  427.           Each row is filled before    moving    on  to    the  next
  428.           row,  if    row  order  recalculation is set.  Column
  429.           order fills each column in the range before  moving
  430.           on  to  the  next     column.  The start and    increment
  431.           numbers may be positive or negative.  To    fill  all
  432.           cells  with  the    same  value, give an increment of
  433.           zero.
  434.  
  435.           _✓E_✓x_✓a_✓m_✓p_✓l_✓e_✓: A Starting value    and Increment  of  "2  5"
  436.           (2 is the    starting value,    5 is the increment)  will
  437.           result in    the defined range being    filled    with  the
  438.           values 2 7 12 17 22 27 ...
  439.  
  440.           A     Range    must be    defined    before choosing    this com-
  441.           mand or it will abort.  (Filling a single     cell  is
  442.           rather a silly thing to do).
  443.  
  444.  
  445.  
  446.  
  447.  
  448.                                 7
  449.  
  450.  
  451.  
  452. SS 1.3.3 (1)                         SS    1.3.3 (1)
  453.  
  454.  
  455.        _✓V_✓a_✓l_✓u_✓e_✓i_✓z_✓e
  456.           Values  only.  This command removes the expressions
  457.           from a range of cells, leaving just the  values  of
  458.           the expressions.
  459.  
  460.           _✓E_✓x_✓a_✓m_✓p_✓l_✓e_✓: A cell contains a function which    currently
  461.           evaluates    to 12.    Valueizing that    cell would result
  462.           in  the  function     being    removed, and the constant
  463.           value 12 being inserted into the cell.
  464.  
  465.           _✓B_✓U_✓G_✓: ``Valueize''    is almost certainly  not  a  real
  466.           word.
  467.  
  468.        The Copy    and Erase parts    of this    section    are rather klunky
  469.        & kludgy.  It needs work.  One hoped for    improvement is to
  470.        re-do  this section into    a more Macintosh-like setup, with
  471.        a CUT/COPY/PASTE    type of    interface.  Hopefully  this  sec-
  472.        tion will be cleaned up in the next release.
  473.  
  474.    C✓Ce✓el✓ll✓l    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  475.        G✓G:Goto M✓M:Mark C✓C:Copy marked cell    L✓L:edit Label V✓V:edit Value
  476.  
  477.        This menu deals with operations that  affect  the  current
  478.        cell  only.   All of these menu items have direct Control-
  479.        or Function-Key equivalents.  I suspect    that  the  direct
  480.        keyboard     equivalents will prove    to be more used    than this
  481.        menu.  In which case, this menu    may  disappear    with  the
  482.        next release.
  483.  
  484.        _✓G_✓o_✓t_✓o   Go to a cell.  _✓s_✓s    prompts    for a cell's name, a reg-
  485.           ular expression surrounded by quotes, or a  number.
  486.  
  487.           If  a cell's name    such as    ``ae122    '' or the name of
  488.           a    defined    range is  given,  the  cell  cursor  goes
  489.           directly to that cell.  If a quoted regular expres-
  490.           sion such    as  "Tax  Table"  or  "^Jan  [0-9]*$"  is
  491.           given,  _✓s_✓s  searches for a cell containing a string
  492.           matching the regular  expression.      Note    that  you
  493.           must use double quotes (") around    a regular expres-
  494.           sion.  See _✓r_✓e_✓g_✓e_✓x_✓(_✓3_✓) or _✓e_✓d_✓(_✓1_✓) for    more  details  on
  495.           the form of regular expressions.
  496.  
  497.           If  a  number  is     given,    _✓s_✓s will    search for a cell
  498.           containing  that    number.      Searches   for   either
  499.           strings or numbers proceed forward from the current
  500.           cell, wrapping back to a0    at the end of the  table,
  501.           and  terminate at    the current cell if the    string or
  502.           number is    not found.
  503.  
  504.           You may also go to a cell    with an    ERROR (divide  by
  505.           zero,  etc  in  this cell) or INVALID (references    a
  506.           cell containing an ERROR).  Entering ``error''  (No
  507.           quotes!    Case  unimportant)  will  take you to the
  508.           next ERROR, while    ``invalid'' takes you to the next
  509.  
  510.  
  511.  
  512.                                 8
  513.  
  514.  
  515.  
  516. SS 1.3.3 (1)                         SS    1.3.3 (1)
  517.  
  518.  
  519.           invalid.
  520.  
  521.           The  last     goto  command    is  saved, and can be re-
  522.           issued by    entering <return> at the Goto prompt.
  523.  
  524.        _✓M_✓a_✓r_✓k   Mark a cell to be    used as    the source for the ``Copy
  525.           Marked Cell'' command.
  526.  
  527.        _✓C_✓o_✓p_✓y _✓M_✓a_✓r_✓k_✓e_✓d _✓C_✓e_✓l_✓l
  528.           Copy the last cell marked    with the ``Mark'' command
  529.           to the current cell, updating row    and column refer-
  530.           ences  in    its numeric or string expression, if any.
  531.  
  532.        _✓E_✓d_✓i_✓t _✓L_✓a_✓b_✓e_✓l
  533.  
  534.        _✓E_✓d_✓i_✓t _✓V_✓a_✓l_✓u_✓e
  535.           Edit the string (value) associated with the current
  536.           cell.   A     subset    of ``emacs'' commands are used in
  537.           this mode.   See    ``Emacs     Command/Entry    Editing''
  538.           below.
  539.  
  540.    R✓Ro✓ow✓w &✓& C✓Co✓ol✓lu✓um✓mn✓n    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u'✓'s✓s
  541.        I✓I:Insert     D✓D:Delete  Y✓Y:Yank  M✓M:Merge  C✓C:Copy  H✓H:Hide S✓S:Show
  542.        V✓V:Valueize F✓F:Fmt
  543.  
  544.        With the    exception of the ``Fmt'' item, the Row and Column
  545.        Menus are identical.  Fmt appears on the    Column Menu only.
  546.        The operations on the two menus are also     identical,  with
  547.        the  obvious explanation    that Row menu commands operate on
  548.        Rows, and Column    menu commands operate on Columns.
  549.  
  550.        Commands    which move or copy cells also modify the row  and
  551.        column  references in affected cell expressions.     The ref-
  552.        erences may be frozen by    using the _✓f_✓i_✓x_✓e_✓d    operator or using
  553.        the  _✓$  character  in the reference to the cell.     (See the
  554.        section below: ``WORKING    WITH SS'' - subsection ``Variable
  555.        Names'')
  556.  
  557.        _✓I_✓n_✓s_✓e_✓r_✓t Insert  some  Rows  or  Columns.     If  a    range  is
  558.           defined,    insert    the  number  of     rows    (columns)
  559.           spanned  by  the    range.     If  no    range is defined,
  560.           insert just one row (column).  The new row (column)
  561.           is empty.
  562.  
  563.           Rows  (columns) will be inserted before the current
  564.           one.  In the case    of a  range,  the  `current'  row
  565.           (column)    will  be  the top-most row (leftmost col-
  566.           umn).
  567.  
  568.        _✓D_✓e_✓l_✓e_✓t_✓e Delete  some  Rows  or  Columns.     If  a    range  is
  569.           defined,    delete    the rows (columns) spanned by the
  570.           range.  If no range is defined, delete just the row
  571.           (column) where the cell cursor is.
  572.  
  573.  
  574.  
  575.  
  576.                                 9
  577.  
  578.  
  579.  
  580. SS 1.3.3 (1)                         SS    1.3.3 (1)
  581.  
  582.  
  583.        _✓Y_✓a_✓n_✓k   Yank back    a previously deleted set of cells, making
  584.           room for them by inserting enough    rows, or columns.
  585.           They are inserted    at the current cursor location.
  586.  
  587.           _✓N_✓o_✓t_✓e_✓:  Using  the     Row  menu to Yank back    a deleted
  588.           Column will insert as many  rows    as  were  in  the
  589.           deleted column.  The same    is true    of using the Col-
  590.           umn menu to yank back a deleted Row.  These  ``Fea-
  591.           tures'' are probably bugs.
  592.  
  593.           _✓B_✓u_✓g_✓:  (Feature?) This operation will also    yank back
  594.           cells erased with    the ``Erase'' command on the Edit
  595.           menu.   In  most    of  those  cases though, you will
  596.           probably want to use the Merge command to    do  that.
  597.  
  598.        _✓M_✓e_✓r_✓g_✓e  This  command  also  yanks  back previously deleted
  599.           cells.  However, it does NOT insert rows or columns
  600.           to  make    room  for  the yanked back material.  The
  601.           present contents of any  cells  (beginning  at  the
  602.           current  cell cursor location) will be overwritten.
  603.  
  604.           Unlike the yank command, a merged-back column  will
  605.           start  at    the current cell cursor    location, it will
  606.           NOT start    in row 0.  The same is    true  of  merged-
  607.           back rows.
  608.  
  609.           This  command  is     the  same, whether you    select it
  610.           through the Row menu or the Column menu.
  611.  
  612.           This operation will also    yank  back  cells  erased
  613.           with the ``Erase'' command on the    Edit menu.
  614.  
  615.           _✓N_✓o_✓t_✓e_✓: This command really    belongs    on the Edit menu.
  616.           However, it is temporarily staying here, to  be  by
  617.           the Yank command,    to which it is a ``partner''.
  618.  
  619.        _✓C_✓o_✓p_✓y   Make  a copy (actually, a    duplicate) of the current
  620.           row (column), and    insert it into the spreadsheet to
  621.           the right    (below)    of the current row (column).
  622.  
  623.           This command operates on only one    row (column) at    a
  624.           time.  Any defined range is ignored.
  625.  
  626.        _✓H_✓i_✓d_✓e   Hide some    rows (columns).     If a range  is     defined,
  627.           hide  the     number     of rows (columns) spanned by the
  628.           range.  If no range is defined, hide just    the  cur-
  629.           rent row (column).
  630.  
  631.           This  keeps a row    (column) from being displayed but
  632.           keeps it in the spreadsheet.   The  status  of  the
  633.           rows  and    columns    is saved with the sheet    so hidden
  634.           rows and columns will be still be    hidden    when  you
  635.           reload the spreadsheet.  Hidden rows or columns are
  636.           not printed by the ``Write Txt'' command.
  637.  
  638.  
  639.  
  640.                                    10
  641.  
  642.  
  643.  
  644. SS 1.3.3 (1)                         SS    1.3.3 (1)
  645.  
  646.  
  647.        _✓S_✓h_✓o_✓w   Show Hidden Row's    (Columns).  Shows the first  hid-
  648.           den  row(s)  (columns) in    the spreadsheet, starting
  649.           at the top (left).
  650.  
  651.        _✓V_✓a_✓l_✓u_✓e_✓i_✓z_✓e
  652.           Valueize    some  rows  (columns).     If  a    range  is
  653.           defined,    Valueize  the  number  of  rows    (columns)
  654.           spanned by the range.  If    no range is defined, val-
  655.           ueize just the current row (column).
  656.  
  657.           See the section on ``Valueize'' under the    Edit Menu
  658.           (above) for more information.
  659.  
  660.        _✓F_✓m_✓t _✓(_✓F_✓o_✓r_✓m_✓a_✓t_✓)
  661.           This option appears on the Column    menu only.
  662.  
  663.           Format the current column.  (This    is primarily use-
  664.           ful  for    adjusting the column width.)  There seems
  665.           to be some overlap here between this  function  and
  666.           the  format  function  in     the  edit menu.  (as you
  667.           might have guessed, this    function  is  a     holdover
  668.           from  ``sc''  that I have    not explored in    any great
  669.           depth.)  SHOULD BE FIXED UP.
  670.  
  671.           _✓(_✓H_✓e_✓r_✓e_✓'_✓s _✓t_✓h_✓e _✓`_✓`_✓s_✓c_✓'_✓' _✓d_✓e_✓f_✓i_✓n_✓i_✓t_✓i_✓o_✓n_✓: Set the output  for-
  672.           mat  to  be used for printing the    numeric    values in
  673.           each cell    in the current column.    Enter three  num-
  674.           bers:  the total width in    characters of the column,
  675.           the number of digits to follow decimal points,  and
  676.           the  format  type.   Format  types  are 0    for fixed
  677.           point, 1 for scientific notation,    2 for engineering
  678.           notation,     and 3 for dates.  Values are rounded off
  679.           to the least significant digit displayed.    )
  680.  
  681.    V✓Vi✓ie✓ew✓w    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  682.        C✓C:Cell hiliting T✓T:Top line  disp.   V✓V:show  Values  E✓E:show
  683.        Expr.  R✓R:Recalc
  684.  
  685.        The  View  menu    contains operations that affect    the users
  686.        view of the spreadsheet.
  687.  
  688.        _✓C_✓e_✓l_✓l _✓h_✓i_✓l_✓i_✓t_✓i_✓n_✓g
  689.           Enable/Disable  Current  cell   highlighting.    If
  690.           enabled, the current cell    is highlighted (using the
  691.           terminal's standout mode,    if available) in addition
  692.           to being marked by the cell cursor.  (DEFAULT: cell
  693.           highlighting on)
  694.  
  695.        _✓T_✓o_✓p _✓l_✓i_✓n_✓e    _✓d_✓i_✓s_✓p_✓l_✓a_✓y
  696.           Enable/Disable top  line    display     of  the  current
  697.           cell's contents.    If enabled, the    name and value of
  698.           the current cell is displayed on the top line.   If
  699.           there  is     an  associated     label    string,    the first
  700.           character    of  the     string     value    is  ``|''  for    a
  701.  
  702.  
  703.  
  704.                                    11
  705.  
  706.  
  707.  
  708. SS 1.3.3 (1)                         SS    1.3.3 (1)
  709.  
  710.  
  711.           centered    string,     ``<''    for a leftstring or ``>''
  712.           for a rightstring    (see below), followed by "_✓s_✓t_✓r_✓i_✓n_✓g"
  713.           for  a  constant    string    or  {_✓e_✓x_✓p_✓r}  for     a string
  714.           expression.  A constant string may be preceded with
  715.           a     backslash  (`\').   In     this  case  the constant
  716.           string will be used as a ``wheel'' to fill  a  col-
  717.           umn,  e.g. "\-" for a line in a column, and "\Yeh    "
  718.           for "Yeh Yeh Ye".     If the    cell has a numeric value,
  719.           it  follows  as [_✓v_✓a_✓l_✓u_✓e], which may be a constant or
  720.           expression.  (DEFAULT: top line display enabled)
  721.  
  722.        _✓S_✓h_✓o_✓w _✓V_✓a_✓l_✓u_✓e_✓s
  723.           Redraw the screen, highlighting  all  cells  to  be
  724.           filled  in.   This is useful for finding values you
  725.           need to provide or update    in a form with which  you
  726.           aren't  familiar or of which you have forgotten the
  727.           details.
  728.  
  729.           It's also    useful for checking a form you are creat-
  730.           ing.  All    cells which contain constant numeric val-
  731.           ues (not the result of a    numeric     expression)  are
  732.           highlighted  temporarily,     until    the  next  screen
  733.           change, however minor.   To  avoid  ambiguity,  the
  734.           current  range  (if  any)     and current cell are not
  735.           highlighted.
  736.  
  737.        _✓S_✓h_✓o_✓w _✓E_✓x_✓p_✓r_✓e_✓s_✓s_✓i_✓o_✓n_✓s
  738.           This command is similar to _✓S_✓h_✓o_✓w _✓V_✓a_✓l_✓u_✓e_✓s,  but  high-
  739.           lights  cells which have expressions.  It    also dis-
  740.           plays the    expressions in the highlighted    cells  as
  741.           left-flushed strings, instead of the numeric values
  742.           and/or label strings of those cells.  This  command
  743.           makes it easier to check expressions, at least when
  744.           they fit in their    cells or  the  following  cell(s)
  745.           are  blank  so  the  expressions can overflow (like
  746.           label strings).  In the latter case,  the     overflow
  747.           is  not  cleared    on the next screen update, so you
  748.           may want redraw the screen (via _✓^_✓L) after    this com-
  749.           mand in order to clean up    the screen.
  750.  
  751.        _✓R_✓e_✓c_✓a_✓l_✓c Recalculates the spreadsheet.  (This is likely only
  752.           useful if    automatic recalculation    is disabled.  See
  753.           the ``Input Sub-Menu'' below)
  754.  
  755.    I✓In✓np✓pu✓ut✓t S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  756.        A✓A:Auto  L✓L:Label    R✓R:Rounding N✓N:Newline action Z✓Z:Limits C✓C:Cr
  757.        terminate P✓P:Pre-scale  M✓M:Macro  The  Input  menu     contains
  758.        operations that control Input to    the Spreadsheet.
  759.  
  760.        _✓A_✓u_✓t_✓o   Enable/Disable   automatic   recalculation  of  the
  761.           spreadsheet.  When set, each change in the  spread-
  762.           sheet  causes  the  entire  spreadsheet be recalcu-
  763.           lated.  Normally this is not  noticeable,     but  for
  764.           very  large spreadsheets,    it may be faster to clear
  765.  
  766.  
  767.  
  768.                                    12
  769.  
  770.  
  771.  
  772. SS 1.3.3 (1)                         SS    1.3.3 (1)
  773.  
  774.  
  775.           automatic    recalculation mode and update the spread-
  776.           sheet  via  explicit  requests  to  recalculate the
  777.           spreadsheet.  (DEFAULT: automatic    recalculation on)
  778.  
  779.        _✓L_✓a_✓b_✓e_✓l  Enable/Disable  automatic    labeling of named ranges.
  780.           If enabled, using    the Define command (on    the  Name
  781.           sub-menu)    causes a label to be automatically gener-
  782.           ated in the cell to the left of the  defined  cell.
  783.           This is only done    if the cell to the left    is empty.
  784.           (DEFAULT:    autolabeling enabled)
  785.  
  786.        _✓R_✓o_✓u_✓n_✓d_✓i_✓n_✓g
  787.           Selecting    this menu item causes the spreadsheet  to
  788.           toggle   between     round-to-even    (Also  knowns  as
  789.           Banker's Round, the default) and round-to-infinity.
  790.           In  round-to-even,  *.5  will  round to the closest
  791.           even number.   Under  round-to-infinity,    *.5  will
  792.           round  up    to the next integer.
  793.  
  794.        _✓N_✓e_✓w_✓l_✓i_✓n_✓e _✓A_✓c_✓t_✓i_✓o_✓n
  795.           After each command which is terminated by    a newline
  796.           character    is completed, one of three  actions  will
  797.           occur:
  798.  
  799.           1)    No action (Default).
  800.           2)    Move down one row.
  801.           3)    Move right one column.
  802.           4)    Move in the    same direction
  803.             as the last    Arrow key took us.
  804.  
  805.           This option toggles between those    four actions.
  806.  
  807.        _✓L_✓i_✓m_✓i_✓t_✓s Set newline action limits.  This option sets limits
  808.           to the newline  action  option  above.   When  this
  809.           option  is  invoked, the row and column of the cur-
  810.           rent cell     are  remembered.   If    a  later  newline
  811.           action  would take the current cell to the right of
  812.           the remembered column, then  the    current     cell  is
  813.           instead  moved to    the first column of the    next row.
  814.           If a newline action would     take  the  current  cell
  815.           below  the remembered row, then the current cell is
  816.           instead moved to the top row of the next column.
  817.  
  818.        The ``newline action'' and ``set    newline     action     limits''
  819.        options can be combined to allow    very quick entry of large
  820.        amounts of data.     If all    the data to be entered    is  in    a
  821.        single  row or column then setting the appropriate newline
  822.        action will allow the numbers to    be  entered  without  any
  823.        explicit    commands to position the current cell.
  824.  
  825.        If the data entry involves several entries in each row for
  826.        many rows, then setting the quick  numeric  entry  option,
  827.        setting    the newline action to move right after each entry
  828.        and setting the newline action limits on    the  last  column
  829.  
  830.  
  831.  
  832.                                    13
  833.  
  834.  
  835.  
  836. SS 1.3.3 (1)                         SS    1.3.3 (1)
  837.  
  838.  
  839.        on  which  data    should    be entered will    allow the data to
  840.        entered quickly.     If necessary, columns which do    not  need
  841.        data  to     be  entered can be hidden.  Similar arrangements
  842.        can be made for entering    several    rows of    data in    each col-
  843.        umn.
  844.  
  845.        _✓C_✓R _✓T_✓e_✓r_✓m_✓i_✓n_✓a_✓t_✓e
  846.           By default, when entering    data into a cell, you can
  847.           terminate    data entry by using the    Return key, or by
  848.           using  one  of  the 4 arrow keys.     (See the section
  849.           below on ENTERING     DATA)    This  menu  item  toggles
  850.           between  the  default  method of data entry and CR-
  851.           terminate    data entry.  In    CR-terminated mode,  data
  852.           entry  can  only    be  terminated by the return key.
  853.           This let's you use the  Left/Right  arrow     keys  to
  854.           edit the data as you enter it.
  855.  
  856.           BUG:  The     setting of this flag is NOT saved in the
  857.           data file    between    runs of    the program.
  858.  
  859.        _✓P_✓r_✓e_✓-_✓S_✓c_✓a_✓l_✓e
  860.           Dollar prescale.    If enabled, all    numeric    constants
  861.           (not expressions)    which you enter    are multiplied by
  862.           0.01 so you don't    have to    keep typing  the  decimal
  863.           point if you enter lots of dollar    figures.
  864.  
  865.        _✓M_✓a_✓c_✓r_✓o  Invoke the Macro Sub-Menu.
  866.  
  867.    M✓Mi✓is✓sc✓c    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  868.        !✓!:Shell Cmd E✓E:Ext fn's I✓I:Iterations R✓R:Recalc Order T✓T:Table
  869.        Sty X✓X:Encrypt
  870.  
  871.        _✓S_✓h_✓e_✓l_✓l _✓C_✓o_✓m_✓m_✓a_✓n_✓d
  872.           _✓s_✓s prompts for a shell command  to  run.     End  the
  873.           command  line  with the <RETURN> key.  If    the envi-
  874.           ronment variable SHELL is    defined,  that    shell  is
  875.           run.   If    not, /bin/sh is    used.  Giving a    null com-
  876.           mand line    starts the shell in interactive    mode.    A
  877.           second ``!'' repeats the previous    shell command.
  878.  
  879.        _✓E_✓x_✓t _✓F_✓n_✓'_✓s
  880.           External function    execution.  When disabled, exter-
  881.           nal functions (see _✓@_✓e_✓x_✓t()    below)    are  not  called.
  882.           This saves a lot of time at each screen update.  If
  883.           disabled,    and external functions are used    anywhere,
  884.           a     warning  is  printed  each  time  the    screen is
  885.           updated, and the result of _✓@_✓e_✓x_✓t()    is the value from
  886.           the  previous  call,  if    any,  or  a  null string.
  887.           (DEFAULT:    external function execution disabled)
  888.  
  889.        _✓I_✓t_✓e_✓r_✓a_✓t_✓i_✓o_✓n_✓s
  890.           Set the maximum number of    recalculations before the
  891.           screen is    displayed again.  Iterations is    set to 10
  892.           by default.
  893.  
  894.  
  895.  
  896.                                    14
  897.  
  898.  
  899.  
  900. SS 1.3.3 (1)                         SS    1.3.3 (1)
  901.  
  902.  
  903.        _✓R_✓e_✓c_✓a_✓l_✓c _✓O_✓r_✓d_✓e_✓r
  904.           Specify the order    of cell    evaluation when    updating.
  905.           This  options  toggles between column-wise and row-
  906.           wise (the    default) spreadsheet recalculation.
  907.  
  908.        _✓T_✓a_✓b_✓l_✓e _✓S_✓t_✓y_✓l_✓e
  909.           Invoke the Table Style Sub-Menu.
  910.  
  911.        _✓E_✓n_✓c_✓r_✓y_✓p_✓t
  912.           Turn encryption of files on/off.
  913.  
  914.           NOTE: Encryption    may  not  be  available     at  your
  915.           sight.  See the ``-x'' item under    O✓OP✓PT✓TI✓IO✓ON✓NS✓S    above for
  916.           further details.
  917.  
  918.    M✓Ma✓ac✓cr✓ro✓o S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  919.        R✓R:Run D✓D:Define
  920.  
  921.        _✓R_✓u_✓n    (Run macros) Since _✓s_✓s  files  are     saved    as  ASCII
  922.           files,  it  is  possible    to  use    them as    primitive
  923.           macro definition files.  The ``Run'' command  makes
  924.           this easier.  It's like the ``File/Merge'' command,
  925.           but prints a saved path name as the  start  of  the
  926.           filename    to  merge  in.     The string to use is set
  927.           with the ``Define'' command.  To write macros,  you
  928.           must  be    familiar  with the file    format written by
  929.           the ``File/Save''    commands.  T✓Th✓hi✓is✓s    f✓fa✓ac✓ci✓il✓li✓it✓ty✓y i✓is✓s s✓st✓ti✓il✓ll✓l
  930.           p✓pr✓ri✓im✓mi✓it✓ti✓iv✓ve✓e    a✓an✓nd✓d c✓co✓ou✓ul✓ld✓d b✓be✓e m✓mu✓uc✓ch✓h i✓im✓mp✓pr✓ro✓ov✓ve✓ed✓d.✓.
  931.  
  932.           D✓Di✓is✓sc✓cl✓la✓ai✓im✓me✓er✓r:✓:   This   code      was    lifted    virtually
  933.           unchanged    from  `sc'.   I     don't    use  it,  haven't
  934.           explored    it,  and  therefore  don't understand it.
  935.           (Art Mulder)
  936.  
  937.        _✓D_✓e_✓f_✓i_✓n_✓e Define a path for    the ``Run'' command to use.
  938.  
  939.    N✓Na✓am✓me✓e    S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  940.        D✓D:Define    Name E✓E:Erase Name S✓S:Show Names
  941.  
  942.        This menu is invoked from the Edit menu.
  943.  
  944.        _✓D_✓e_✓f_✓i_✓n_✓e _✓N_✓a_✓m_✓e
  945.           Define a Name for    a range    of cells.  If no range is
  946.           currently     defined, then define a    name for the cur-
  947.           rent cell.
  948.  
  949.           Names defined in this fashion are    used by    the  pro-
  950.           gram  in future prompts, may be entered in response
  951.           to prompts requesting a cell or range name, and are
  952.           saved when the spreadsheet is saved.  Names defined
  953.           must be more than    two alpha characters long to dif-
  954.           ferentiate  them    from a column names, and must not
  955.           have  embedded  special  characters.    Names   may
  956.           include  the character ``_'' or numerals as long as
  957.  
  958.  
  959.  
  960.                                    15
  961.  
  962.  
  963.  
  964. SS 1.3.3 (1)                         SS    1.3.3 (1)
  965.  
  966.  
  967.           they occur after the first three alpha  characters.
  968.  
  969.        _✓E_✓r_✓a_✓s_✓e _✓N_✓a_✓m_✓e
  970.           Erase the    name assigned to a range of cells.  If no
  971.           range is currently defined, then prompt for a  cell
  972.           name to erase.
  973.  
  974.        _✓S_✓h_✓o_✓w _✓N_✓a_✓m_✓e_✓s
  975.           List all Names that have been assigned to    cells, or
  976.           ranges of    cells.    Pipe the  output  to  'sort'  and
  977.           then  to    a  pager.  Therefore the list of names is
  978.           sorted, and it will not run off  the  top     of  your
  979.           display.    If the environment variable PAGER is set,
  980.           its value    is used    as your    pager, otherwise a (sytem
  981.           dependent) default pager is used.
  982.  
  983.    T✓Ta✓ab✓bl✓le✓e S✓St✓ty✓yl✓le✓e S✓Su✓ub✓b-✓-M✓Me✓en✓nu✓u
  984.        N✓N:None T✓T:Tbl X✓X:TeX L✓L:LaTeX S✓S:sLaTeX F✓F:Frame
  985.  
  986.        This menu is invoked from the Misc menu.
  987.  
  988.        The Table Style menu controls which delimeters are used to
  989.        separate    the data when a    text-only listing of the  current
  990.        spreadsheet  is    out via    the _✓T_✓a_✓b_✓l_✓e _✓S_✓a_✓v_✓e option on the File
  991.        menu.  The possible choices are:    N✓No✓on✓ne✓e (also shown as style
  992.        0✓0) to give plain    colon delimited    fields;    t✓tb✓bl✓l to give colon
  993.        delimited fields, with _✓t_✓b_✓l(1) control lines;  T✓Te✓eX✓X,  L✓La✓aT✓Te✓eX✓X,
  994.        s✓sL✓La✓aT✓Te✓eX✓X,    to give    appropriate delimeters for those environ-
  995.        ments (SLaTeX = Scandinavian LaTeX) consisting  of  simple
  996.        tabbed  alignment with ampersands as delimiters;    and F✓Fr✓ra✓am✓me✓e
  997.        to produce a file suitable for reading into _✓F_✓r_✓a_✓m_✓e_✓M_✓a_✓k_✓e_✓r.
  998.  
  999. C✓CO✓OM✓MM✓MA✓AN✓ND✓DS✓S
  1000.        A number    of commands are    accessible directly from the key-
  1001.        board, via Control-keys,    or Function-keys.  These are pri-
  1002.        marily cursor movement commands (ie: up-arrow  key,  etc),
  1003.        but  there  are    also a small number of control-keys which
  1004.        access other functions.
  1005.  
  1006.        _✓N_✓O_✓T_✓E_✓: In    the following ``^✓^'' indicates the use of the Con-
  1007.        trol  key.   Hence,  ^✓^A✓A means ``Hold down the Control key,
  1008.        while typing the    `A' key''.  Also, <✓< >✓> are used    to  iden-
  1009.        tify  ``named''    keys.  So, <✓<D✓De✓el✓le✓et✓te✓e>✓> stands for the Delete
  1010.        Key.
  1011.  
  1012.        There are also a    few commands  that  are     invoked  by  two
  1013.        keystrokes  in  succession.  For    example, `` ^X v '' means
  1014.        ``Type Control-X, then v'' (Case    is unimportant,    V or v is
  1015.        fine).    Also,  ``<Esc>    v'' means ``Type <Esc>,    then v''.
  1016.        In some cases, there exists more    than one command sequence
  1017.        for  the     same  thing.    (Like ^B and <Left Arrow>).  Both
  1018.        commands    are then listed    together, separated by a comma.
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.                                    16
  1025.  
  1026.  
  1027.  
  1028. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1029.  
  1030.  
  1031.    C✓Cu✓ur✓rs✓so✓or✓r M✓Mo✓ov✓ve✓em✓me✓en✓nt✓t
  1032.        These key sequences all move the    cell cursor.  When possi-
  1033.        ble, I strove to    use the    same control-key sequences as the
  1034.        emacs text editor - no point in reinventing the wheel!
  1035.  
  1036.        Moving Short Distances:
  1037.  
  1038.      ^✓^B✓B,✓, <✓<L✓Le✓ef✓ft✓t A✓Ar✓rr✓ro✓ow✓w>✓>    Move left one cell.
  1039.  
  1040.      ^✓^F✓F,✓, <✓<R✓Ri✓ig✓gh✓ht✓t A✓Ar✓rr✓ro✓ow✓w>✓>   Move right    one cell.
  1041.  
  1042.      ^✓^P✓P,✓, <✓<U✓Up✓p A✓Ar✓rr✓ro✓ow✓w>✓>         Move up one cell.
  1043.  
  1044.      ^✓^N✓N,✓, <✓<D✓Do✓ow✓wn✓n A✓Ar✓rr✓ro✓ow✓w>✓>    Move down one cell.
  1045.  
  1046.        Moving Longer Distances:
  1047.  
  1048.      <✓<E✓Es✓sc✓c>✓> <✓<,✓, <✓<H✓Ho✓om✓me✓e>✓>
  1049.            Jump    to cell    A0.
  1050.  
  1051.      <✓<E✓Es✓sc✓c>✓> >✓>,✓, <✓<E✓En✓nd✓d>✓>
  1052.            Jump    to the last row    of the current column.
  1053.  
  1054.      ^✓^T✓T       Jump    to row 0 of the    current    column.
  1055.  
  1056.      ^✓^A✓A       Jump    to the first  cell  in    the  current  row
  1057.            (Column A).
  1058.  
  1059.      ^✓^E✓E       Jump     to  the  last    valid cell in the current
  1060.            row.
  1061.  
  1062.      <✓<E✓Es✓sc✓c>✓> v✓v,✓, <✓<P✓Pg✓gU✓Up✓p>✓>
  1063.            Jump    a (half) page up.
  1064.  
  1065.      ^✓^V✓V,✓, <✓<P✓Pg✓gD✓Dn✓n>✓>
  1066.            Jump    a (half) page down.
  1067.  
  1068.      ^✓^X✓X <✓<,✓, <✓<S✓Sh✓hi✓if✓ft✓t>✓><✓<L✓Le✓ef✓ft✓t A✓Ar✓rr✓ro✓ow✓w>✓>
  1069.            Jump    a (half) page left.
  1070.  
  1071.      ^✓^X✓X >✓>,✓, <✓<S✓Sh✓hi✓if✓ft✓t>✓><✓<R✓Ri✓ig✓gh✓ht✓t A✓Ar✓rr✓ro✓ow✓w>✓>
  1072.            Jump    a (half) page right.
  1073.  
  1074.        Special Movement:
  1075.  
  1076.      <✓<E✓Es✓sc✓c>✓> b✓b   Move    the cursor backward to the previous valid
  1077.            cell.
  1078.  
  1079.      <✓<E✓Es✓sc✓c>✓> f✓f   Move    the cell cursor    forward    to the next valid
  1080.            cell.   These  two  commands     do  not   ``wrap
  1081.            around''  when  the    end of the spreadsheet is
  1082.            encountered.
  1083.  
  1084.      ^✓^J✓J       Jump     the  cursor  to  the  end  of    a  (user-
  1085.  
  1086.  
  1087.  
  1088.                                    17
  1089.  
  1090.  
  1091.  
  1092. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1093.  
  1094.  
  1095.            specified)  range.  The user    is prompted for    a
  1096.            direction (Any of the Up,Down,Left,Right  com-
  1097.            mands  above),  and    the  cell  cursor is then
  1098.            jumped to the last valid cell in  that  direc-
  1099.            tion.
  1100.  
  1101.            The    user  can  enter a <Space> or <Return> to
  1102.            abort this procedure.
  1103.  
  1104.    M✓Me✓en✓nu✓u    S✓Sh✓ho✓or✓rt✓t-✓-C✓Cu✓ut✓ts✓s
  1105.        These commands  all  duplicate  functions  that    are  also
  1106.        available  through menu's.  They    exist here because I felt
  1107.        that they would be used often enough to warrant a  quicker
  1108.        access to their functionality.
  1109.  
  1110.        Cell Menu Short-Cuts:
  1111.  
  1112.      ^✓^G✓G    Goto a Cell.  See ``Goto'' on the Cell Menu.
  1113.  
  1114.      ^✓^W✓W    Mark a Cell for    later copying.    See ``Mark''.
  1115.  
  1116.      ^✓^Y✓Y    Copy  a     previously  marked  cell  to the current
  1117.         cell.  See ``Copy''.
  1118.  
  1119.      ^✓^X✓X V✓V    Edit the Value of the Current Cell.  See   ``edit
  1120.         Value''.
  1121.  
  1122.      ^✓^X✓X L✓L    Edit  the Label    of the Current Cell.  See  ``edit
  1123.         Label''.
  1124.  
  1125.        Edit Menu Short-Cuts:
  1126.  
  1127.      <✓<D✓De✓el✓l>✓>,✓,    <✓<B✓Ba✓ac✓ck✓kS✓Sp✓pa✓ac✓ce✓e>✓>,✓, ^✓^D✓D
  1128.         Erase the contents (Label and Value) of    the  cur-
  1129.         rent  cell.   This  is    similar     to  choosing the
  1130.         ``Erase'' item on the Edit  Menu  with    no  range
  1131.         defined, and therefore the ``Yank'' and    ``Merge''
  1132.         commands on the    Row & Column menus will    undo this
  1133.         deletion.   See    the relevant sections of this man
  1134.         page for more details.
  1135.  
  1136.        Misc Menu Short-Cuts:
  1137.  
  1138.      ^✓^L✓L    Redraw the screen.  (This isn't    a menu    shortcut,
  1139.         but it does belong with    the next two commands).
  1140.  
  1141.      ^✓^R✓R    Redraw    the Screen and Highlight all Values.  See
  1142.         ``Show Values''
  1143.  
  1144.      ^✓^K✓K    Redraw the Screen and Highlight    all  Expressions.
  1145.         See ``Show Expr''
  1146.  
  1147.    O✓Ot✓th✓he✓er✓r C✓Co✓om✓mm✓ma✓an✓nd✓ds✓s
  1148.        These  commands    do  not     fit  into  either of the the two
  1149.  
  1150.  
  1151.  
  1152.                                    18
  1153.  
  1154.  
  1155.  
  1156. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1157.  
  1158.  
  1159.        previous    categories, so they are     dumped     here  into  that
  1160.        wonderful category known    as ``Miscellaneous''.
  1161.  
  1162.        <✓<T✓Ta✓ab✓b>✓>     Toggle     Range    display/definition mode.  See the
  1163.          section below on R✓RA✓AN✓NG✓GE✓ES✓S
  1164.  
  1165.        <✓<R✓Re✓et✓tu✓ur✓rn✓n>✓>     (or ^M)  The cell-cursor is moved in  one  of    a
  1166.          number     of directions.     See ``/ Misc -    Options    -
  1167.          Return''.
  1168.  
  1169.        ^✓^Z✓Z     Stop.    On systems where this  is  possible,  the
  1170.          program  is stopped, and control is given to the
  1171.          shell.
  1172.  
  1173. E✓EN✓NT✓TE✓ER✓RI✓IN✓NG✓G D✓DA✓AT✓TA✓A (✓(E✓Em✓ma✓ac✓cs✓s C✓Co✓om✓mm✓ma✓an✓nd✓d/✓/E✓En✓nt✓tr✓ry✓y E✓Ed✓di✓it✓ti✓in✓ng✓g)✓)
  1174.        _✓s_✓s frequently prompts the user to enter a line of data  on
  1175.        the  top     line of the display.  When entering such data,    a
  1176.        number of Emacs-compatible commands are supported for  the
  1177.        editing of the data as it is entered.
  1178.  
  1179.        There  are  two    kinds  of these    data input modes.  In the
  1180.        general case, (Cursor  Terminated),  the     user  is  simply
  1181.        entering    a number, function, or label into the spreadsheet
  1182.        (See ``How Input    Is Processed'' above).    In  that  general
  1183.        case, input is terminated with a    <Return> or with an arrow
  1184.        key (or ^N, ^P, ^F, ^B).     When  input  is  ended     with  an
  1185.        arrow  key,  the     cell cursor is    then moved in that direc-
  1186.        tion.  (This sounds confusing, but really it isn't.)
  1187.  
  1188.        In the other case, (<CR>    Terminated), the user  is  either
  1189.        editing    the  contents  of a cell (through one of the cell
  1190.        editing commands    discussed above), or is    entering input in
  1191.        response     to  a    question from the program.  (For example:
  1192.        Enter the name of a filename to load).  In this case, only
  1193.        a <CR> is accepted as terminating input.
  1194.  
  1195.    I✓In✓np✓pu✓ut✓t E✓Ed✓di✓it✓ti✓in✓ng✓g C✓Co✓om✓mm✓ma✓an✓nd✓ds✓s:✓:
  1196.        ^✓^A✓A     Move the cursor to the beginning of the line
  1197.  
  1198.        ^✓^B✓B,✓, <✓<L✓Le✓ef✓ft✓t A✓Ar✓rr✓ro✓ow✓w>✓>
  1199.           Move  the    cursor left.  This command obviously does
  1200.           not apply    to the ``Cursor    Terminated'' mode.
  1201.  
  1202.        ^✓^G✓G     Abort input.  If you are editing a cell, this  com-
  1203.           mand  will  abort    the operation and leave    the cells
  1204.           contents unchanged.
  1205.  
  1206.        ^✓^D✓D     Delete the character ``under'' cursor.
  1207.  
  1208.        ^✓^E✓E     Move to the end of the line.
  1209.  
  1210.        ^✓^F✓F,✓, <✓<R✓Ri✓ig✓gh✓ht✓t A✓Ar✓rr✓ro✓ow✓w>✓>
  1211.           Move the cursor right.  This command obviously does
  1212.           not apply    to the ``Cursor    Terminated'' mode.
  1213.  
  1214.  
  1215.  
  1216.                                    19
  1217.  
  1218.  
  1219.  
  1220. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1221.  
  1222.  
  1223.        ^✓^H✓H,✓, <✓<D✓De✓el✓l>✓>
  1224.           Delete the character to the left of cursor.
  1225.  
  1226.        ^✓^K✓K     Kill from    the cursor to the end of the line.
  1227.  
  1228.        ^✓^L✓L     Redraw the line.
  1229.  
  1230.        ^✓^M✓M,✓, <✓<R✓Re✓et✓tu✓ur✓rn✓n>✓>
  1231.           Terminate    input.
  1232.  
  1233.        ^✓^O✓O     Toggle  Overwrite     (versus  insert) mode.     In Over-
  1234.           write, text to the right of the cursor is    overwrit-
  1235.           ten instead of ``pushed''    right.
  1236.  
  1237.        ^✓^T✓T     Transpose     the character to the left of the cursor,
  1238.           with the character ``under'' the cursor.
  1239.  
  1240.        ^✓^Y✓Y     At the current  cursor  location,     Yank  back  text
  1241.           killed with ^K.
  1242.  
  1243. F✓FO✓OR✓RM✓MA✓AT✓TT✓TI✓IN✓NG✓G C✓CE✓EL✓LL✓L    C✓CO✓ON✓NT✓TE✓EN✓NT✓TS✓S
  1244.        The  following characters can be    used in    building a format
  1245.        string:
  1246.  
  1247.           #✓#         Digit placeholder.     If the    number has  fewer
  1248.              digits  on     either    side of    the decimal point
  1249.              than there    are `#'    characters in the format,
  1250.              the  extra     `#' characters    are ignored.  The
  1251.              displayed number is rounded to the    number of
  1252.              digit placeholders    as are found to    the right
  1253.              of    the decimal point.   If     there    are  more
  1254.              digits  in     the  number than there    are digit
  1255.              placeholders on the left side of the decimal
  1256.              point, then those digits are displayed.
  1257.  
  1258.           0✓0         Digit  placeholder.   Same    as for `#' except
  1259.              that the number is     padded     with  zeroes  on
  1260.              either  side of the decimal point.     The num-
  1261.              ber of zeroes used    in padding is  determined
  1262.              by     the  number  of digit placeholders after
  1263.              the `0' for digits    on the left side  of  the
  1264.              decimal  point  and  by  the number of digit
  1265.              placeholders before the `0'  for  digits  on
  1266.              the right side of the decimal point.
  1267.  
  1268.           .✓.         Decimal  point.   Determines how many digits
  1269.              are placed    on the right and  left    sides  of
  1270.              the  decimal point    in the number.    Note that
  1271.              numbers smaller than 1  will  begin  with    a
  1272.              decimal  point if the left    side of    the deci-
  1273.              mal point contains    only a `#'  digit  place-
  1274.              holder.   Use  a  `0'  placeholder     to get    a
  1275.              leading zero in decimal formats.
  1276.  
  1277.  
  1278.  
  1279.  
  1280.                                    20
  1281.  
  1282.  
  1283.  
  1284. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1285.  
  1286.  
  1287.           %✓%         Percentage.  For each `%' character  in  the
  1288.              format, the actual    number gets multiplied by
  1289.              100 (only for purposes of formatting  -  the
  1290.              original  number is left unmodified) and the
  1291.              `%' character is placed in    the same position
  1292.              as    it is in the format.
  1293.  
  1294.           ,✓,         Thousands    separator  (comma).  The presence
  1295.              of    a `,' in the format (multiple commas  are
  1296.              treated  as one) will cause the number to be
  1297.              formatted with a `,' separating each set  of
  1298.              three digits in the integer part of the num-
  1299.              ber with numbering    beginning from the  right
  1300.              end of the    integer.
  1301.  
  1302.           \✓\         Quote.  This character causes the next char-
  1303.              acter to  be  inserted  into  the    formatted
  1304.              string  directly with no special interpreta-
  1305.              tion.
  1306.  
  1307.           E✓E-✓- E✓E+✓+ e✓e-✓- e✓e+✓+
  1308.              Scientific    format.      Causes  the  number  to
  1309.              formatted    in scientific notation.     The case
  1310.              of    the `E'    or `e' given  is  preserved.   If
  1311.              the  format  uses    a  `+',     then the sign is
  1312.              always given for the exponent value.  If the
  1313.              format  uses  a  `-',  then the sign is only
  1314.              given when    the exponent value  is    negative.
  1315.              Note  that     if there is no    digit placeholder
  1316.              following the `+' or `-', then that part  of
  1317.              the  formatted  number is left out.  In gen-
  1318.              eral, there should     be  one  or  more  digit
  1319.              placeholders after    the `+'    or `-'.
  1320.  
  1321.           ;✓;         Format selector.  Use this    character to sep-
  1322.              arate the format into two distinct     formats.
  1323.              The  format to the    left of    the `;'    character
  1324.              will be used if the number    given is zero  or
  1325.              positive.     The  format  to the right of the
  1326.              `;' character is used if the number given is
  1327.              negative.
  1328.  
  1329.           Some example formats:
  1330.               Integer       ``0'' or ``#''
  1331.               Fixed       ``0.00''
  1332.               Percentage   ``0%'' or ``0.00%''
  1333.               Scientific   ``0.00E+00''
  1334.               Currency       ``$#,0.00;($#,0.00)''
  1335.  
  1336. W✓WO✓OR✓RK✓KI✓IN✓NG✓G    W✓WI✓IT✓TH✓H R✓RA✓AN✓NG✓GE✓ES✓S
  1337.        A  Range     is  defined  as  being    some rectangular block of
  1338.        cells.  A range is identified by     the  cells  in     the  top
  1339.        right  and bottom left corners of the block.  For example,
  1340.        the range C3:F5 refers to the rectangular block of cells:
  1341.  
  1342.  
  1343.  
  1344.                                    21
  1345.  
  1346.  
  1347.  
  1348. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1349.  
  1350.  
  1351.             C3  D3     E3  F3
  1352.             C4  D4     E4  F4
  1353.             C5  D5     E5  F5
  1354.  
  1355.        A number    of commands operate upon ranges.  Most    of  those
  1356.        commands     will also function without a range, in    that case
  1357.        there is    some default effect.  For example, the    ``/-File-
  1358.        Save''    command     will  save  the  entire  spreadsheet  by
  1359.        default.     If a range of cells is    defined, then  that  com-
  1360.        mand  will  instead  just save the defined range    of cells.
  1361.        In contrast, the    ``/-Edit-Erase'' command will by  default
  1362.        just  erase the cell at the current cursor location.  If    a
  1363.        range is    defined, it will erase the entire range    of cells.
  1364.  
  1365.        _✓S_✓S  endeavours  to follow the ``Select then execute'' phi-
  1366.        losophy,    much like mouse-oriented systems do.   For  exam-
  1367.        ple,  instead  of  choosing  the     erase    command, and then
  1368.        entering    a range    of cells to be erase, you first    select    a
  1369.        range of    cells, and then    choose the erase command.
  1370.  
  1371.        To  start  defining a range, use    the <Tab> key.    Then, use
  1372.        any of the cursor motion    keys (arrow keys, PgDn,     etc)  to
  1373.        move  your  cursor.   All  cells    making up the rectangular
  1374.        region between the current cell,    and the     cell  where  you
  1375.        first typed the <Tab> key, will be highlighted, indicating
  1376.        the range of cells you are defining.
  1377.  
  1378.        Once you    have highlighted the desired range of cells, sim-
  1379.        ply  use    the menu commands, as always, to choose    an opera-
  1380.        tion to perform upon the    range you have defined.     See  the
  1381.        above  section  on  MENUS  to find out which commands also
  1382.        apply to    ranges.
  1383.  
  1384.        If, for some reason, you    decide that you    don't want to  do
  1385.        anything    with the range you have    defined, you can type the
  1386.        <Tab> key a second time to discontinue defining    a  range.
  1387.        The  highlighted     section  will then be returned    to normal
  1388.        video, and you will no longer have a range defined.
  1389.  
  1390.  
  1391. W✓WO✓OR✓RK✓KI✓IN✓NG✓G    W✓WI✓IT✓TH✓H S✓SS✓S
  1392.    S✓Sp✓pr✓re✓ea✓ad✓ds✓sh✓he✓ee✓et✓t U✓Up✓pd✓da✓at✓te✓e
  1393.        Re-evaluation of    spreadsheet expressions    is done    by row or
  1394.        by  column  depending  on  the selected calculation order.
  1395.        Evaluation is repeated up to  _✓i_✓t_✓e_✓r_✓a_✓t_✓i_✓o_✓n_✓s     times    for  each
  1396.        update if necessary, so forward references usually work as
  1397.        expected.  If stability has not    been  reached  after  all
  1398.        those  repeated evaluating of the spreadsheet expressions,
  1399.        a warning is printed.  This  is    usually     due  to  a  long
  1400.        series of forward references, or    to unstable cyclic refer-
  1401.        ences (for example, set _✓A_✓0's expression to ``A0+1'').
  1402.  
  1403.        See ``Recalc Order'' under the Misc Menu    above for how  to
  1404.        choose  row  or column evalution    order, and ``Iterations''
  1405.  
  1406.  
  1407.  
  1408.                                    22
  1409.  
  1410.  
  1411.  
  1412. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1413.  
  1414.  
  1415.        for how to change the value of _✓i_✓t_✓e_✓r_✓a_✓t_✓i_✓o_✓n_✓s_✓.
  1416.  
  1417.    A✓Ab✓bo✓ou✓ut✓t C✓Ce✓el✓ll✓ls✓s
  1418.        Cells can contain both a    numeric    value and a string value.
  1419.        Either  value  can be the result    of an expression, but not
  1420.        both at once, i.e.  each    cell can have only one expression
  1421.        associated  with     it.  Entering a valid numeric expression
  1422.        alters the cell's previous  numeric  value,  if    any,  and
  1423.        replaces     the  cell's  previous string expression, if any,
  1424.        leaving    only  the  previously  computed     constant   label
  1425.        string.     Likewise,  entering  a     valid    string expression
  1426.        alters the cell's the previous label string, if    any,  and
  1427.        replaces     the  cell's previous numeric expression, if any,
  1428.        leaving only  the  previously  computed    constant  numeric
  1429.        value.
  1430.  
  1431.    V✓Va✓ar✓ri✓ia✓ab✓bl✓le✓e N✓Na✓am✓me✓es✓s
  1432.        Normally, a variable name is just the name of a cell, such
  1433.        as _✓K_✓2_✓0.    The value is the numeric or string value  of  the
  1434.        cell, according to context.
  1435.  
  1436.        When  a    cell's    expression (formula) is    copied to another
  1437.        location    via _✓c_✓o_✓p_✓y or _✓r_✓a_✓n_✓g_✓e_✓-_✓c_✓o_✓p_✓y,    variable  references  are
  1438.        by  default  offset by the amount the formula moved.  This
  1439.        allows the new formula to work on new data.  If cell  ref-
  1440.        erences    are  not  to change, you can either use    the _✓f_✓i_✓x_✓e_✓d
  1441.        operator    (see example below),  or  one  of  the    following
  1442.        variations on the cell name.
  1443.  
  1444.        _✓K_✓2_✓0    References cell _✓K_✓2_✓0; the reference changes when the
  1445.           formula is copied.
  1446.  
  1447.        $✓$_✓K$✓$_✓2_✓0  Always refers to    cell  _✓K_✓2_✓0;  the     reference  stays
  1448.           fixed when the formula is    copied.
  1449.  
  1450.        $✓$_✓K_✓2_✓0   Keeps the    column fixed at    column K; the row is free
  1451.           to vary.
  1452.  
  1453.        _✓K$✓$_✓2_✓0   Keeps the    row fixed at row 20; the column     is  free
  1454.           to vary.
  1455.  
  1456.        These conventions also hold on defined ranges.  Range ref-
  1457.        erences vary when formulas containing them are copied.  If
  1458.        the  range  is defined with fixed variable references, the
  1459.        references do not change.
  1460.  
  1461.        f✓fi✓ix✓xe✓ed✓d  To make a    variable not change automatically when    a
  1462.           cell moves, put the word _✓f_✓i_✓x_✓e_✓d in    front of the ref-
  1463.           erence, for example:  B1 * fixed C3.
  1464.  
  1465.    N✓Nu✓um✓me✓er✓ri✓ic✓c E✓Ex✓xp✓pr✓re✓es✓ss✓si✓io✓on✓ns✓s
  1466.        Numeric expressions have     a  fairly  conventional  syntax.
  1467.        Terms  may  be  constants,  variable  names, parenthesized
  1468.        expressions, and    negated    terms.    Ranges    may  be     operated
  1469.  
  1470.  
  1471.  
  1472.                                    23
  1473.  
  1474.  
  1475.  
  1476. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1477.  
  1478.  
  1479.        upon with range functions such as sum (_✓@_✓s_✓u_✓m()) and average
  1480.        (_✓@_✓a_✓v_✓g()).  Terms    may be combined    using binary operators.
  1481.  
  1482.        -✓-e     Negation.
  1483.  
  1484.        e+✓+e    Addition.
  1485.  
  1486.        e-✓-e    Subtraction.
  1487.  
  1488.        e*✓*e    Multiplication.
  1489.  
  1490.        e/✓/e    Division.
  1491.  
  1492.        e1%✓%e2  e1 mod e2.
  1493.  
  1494.        e^✓^e    Exponentiation.
  1495.  
  1496.        e<✓<e
  1497.        e<✓<=✓=e
  1498.        e=✓=e
  1499.        e!✓!=✓=e
  1500.        e>✓>=✓=e
  1501.        e>✓>e    Relationals:  true (1) if    and only if the    indicated
  1502.           relation    holds, else false (0).    Note that ``<='',
  1503.           ``!='', and ``>='' are converted to  their  ``~()''
  1504.           equivalents.
  1505.  
  1506.        ~✓~e     Boolean operator NOT.
  1507.  
  1508.        e&✓&e    Boolean operator AND.
  1509.  
  1510.        e|✓|e    Boolean operator OR.
  1511.  
  1512.        @if(✓(e✓e,✓,e,e✓e)✓)
  1513.        e?✓?e:✓:e  Conditional:   If    the first expression is    true then
  1514.           the value    of the second is returned, otherwise  the
  1515.           value of the third.
  1516.        Operator    precedence from    highest    to lowest is:
  1517.           -, ~ ^ *,    / +, - <, <=, =, !=, >=, > & | ?:
  1518.    S✓St✓tr✓ri✓in✓ng✓g E✓Ex✓xp✓pr✓re✓es✓ss✓si✓io✓on✓ns✓s
  1519.        String  expressions are made up of constant strings (char-
  1520.        acters surrounded by double  quotation  marks),    variables
  1521.        (cell  names,  which refer to the cells's label strings or
  1522.        expressions), and  string  functions.   Note  that  string
  1523.        expressions  are    only allowed when entering a cell's label
  1524.        string, not its    numeric     part.     Also  note  that  string
  1525.        expression  results  may     be left or right flushed or cen-
  1526.        tered, according    to the type of the cell's string label.
  1527.        #✓#      Concatenate  strings.   For  example,  the   string
  1528.           expression
  1529.             A0 # "zy dog"
  1530.           displays the string ``the    lazy dog'' in the cell if
  1531.           the value    of _✓A_✓0's    string is ``the    la''.
  1532.  
  1533.  
  1534.  
  1535.  
  1536.                                    24
  1537.  
  1538.  
  1539.  
  1540. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1541.  
  1542.  
  1543. F✓FU✓UN✓NC✓CT✓TI✓IO✓ON✓NS✓S
  1544.  
  1545.    C✓Ce✓el✓ll✓l    F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1546.        @✓@m✓my✓yr✓ro✓ow✓w,✓, @✓@m✓my✓yc✓co✓ol✓l Are functions that return    the row    or column
  1547.        of  the    current    cell respectively.  ex:    The cell directly
  1548.        above a cell in the D column could  then     be  accessed  by
  1549.        @nval("d",@myrow-1).   NOTE:  @myrow  and  @mycol can't be
  1550.        used in specifying ranges.
  1551.    R✓Ra✓an✓ng✓ge✓e F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1552.        These functions return numeric values.
  1553.        @✓@s✓su✓um✓m(r)         Sum all valid (non-blank) entries in the
  1554.              region     whose two corners are defined by
  1555.              the two variable names    (e.g.  _✓c_✓5_✓:_✓e_✓1_✓4) or
  1556.              the range name    specified.
  1557.        @✓@p✓pr✓ro✓od✓d(r)         Multiply  together all    valid (non-blank)
  1558.              entries in the    specified region.
  1559.        @✓@a✓av✓vg✓g(r)         Average all valid (non-blank) entries in
  1560.              the specified region.
  1561.        @✓@c✓co✓ou✓un✓nt✓t(r)     Count    all  valid (non-blank) entries in
  1562.              the specified region.
  1563.        @✓@m✓ma✓ax✓x(r)         Return    the maximum value in  the  speci-
  1564.              fied  region.     See also the multi argu-
  1565.              ment version of _✓@_✓m_✓a_✓x below.
  1566.        @✓@m✓mi✓in✓n(r)         Return    the minimum value in  the  speci-
  1567.              fied  region.     See also the multi argu-
  1568.              ment version of _✓@_✓m_✓i_✓n below.
  1569.        @✓@s✓st✓td✓dd✓de✓ev✓v(r)     Return    the sample standard deviation  of
  1570.              the cells in the specified region.
  1571.        @✓@l✓lo✓oo✓ok✓ku✓up✓p(e,r)
  1572.        @✓@l✓lo✓oo✓ok✓ku✓up✓p(se,r)     Evaluates  the     expression _✓e (or _✓s_✓e) and
  1573.              then searches through the range _✓r for    a
  1574.              matching  value.   The     range    should be
  1575.              either    a single row or    a single  column.
  1576.              The  expression  can  be either a string
  1577.              expression or a numeric expression.   If
  1578.              it is a numeric expression, the range is
  1579.              searched for the  the    last  value  less
  1580.              than  or  equal to _✓e.    If the expression
  1581.              is a string expression, the string  por-
  1582.              tions    of  the     cells    in  the    range are
  1583.              searched for an exact string match.  The
  1584.              value returned    is the numeric value from
  1585.              the next row and the same column as  the
  1586.              match,    if the range was a single row, or
  1587.              the value from    the next column     and  the
  1588.              same row as the match if the range was    a
  1589.              single    column.
  1590.  
  1591.        @✓@h✓hl✓lo✓oo✓ok✓ku✓up✓p(e,r,n)
  1592.        @✓@h✓hl✓lo✓oo✓ok✓ku✓up✓p(se,r,n)     Evaluates the expression _✓e (or     _✓s_✓e)  and
  1593.              then  searches     through the first row in
  1594.              the range _✓r for a matching  value.   The
  1595.              expression   can   be    either    a  string
  1596.              expression or a numeric expression.   If
  1597.  
  1598.  
  1599.  
  1600.                                    25
  1601.  
  1602.  
  1603.  
  1604. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1605.  
  1606.  
  1607.              it  is     a numeric expression, the row is
  1608.              searched for the  the    last  value  less
  1609.              than  or  equal to _✓e.    If the expression
  1610.              is a string expression, the string  por-
  1611.              tions    of  the     cells    in  the     row  are
  1612.              searched for an exact string match.  The
  1613.              value returned    is the numeric value from
  1614.              the same column _✓n rows    below the  match.
  1615.  
  1616.        @✓@v✓vl✓lo✓oo✓ok✓ku✓up✓p(e,r,n)
  1617.        @✓@v✓vl✓lo✓oo✓ok✓ku✓up✓p(se,r,n)     Evaluates  the     expression _✓e (or _✓s_✓e) and
  1618.              then searches through the  first  column
  1619.              in  the  range     _✓r  for    a matching value.
  1620.              The expression    can be    either    a  string
  1621.              expression  or    a numeric expression.  If
  1622.              it is a numeric expression,  the  column
  1623.              is  searched for the the last value less
  1624.              than or equal to _✓e.  If  the  expression
  1625.              is  a string expression, the string por-
  1626.              tions of the cells  in     the  column  are
  1627.              searched for an exact string match.  The
  1628.              value returned    is the numeric value from
  1629.              the  same  row    _✓n columns to the right of
  1630.              the match.
  1631.  
  1632.        @✓@i✓in✓nd✓de✓ex✓x(e,r)     Use the value of  the    expression  _✓e  to
  1633.              index    into  the  range  _✓r.  The numeric
  1634.              value at that position    is returned.  The
  1635.              value    1  selects  the    first item in the
  1636.              range,    2 selects the second  item,  etc.
  1637.              The  range  _✓r    should be either a single
  1638.              row or    a single column.
  1639.  
  1640.        @✓@s✓st✓ti✓in✓nd✓de✓ex✓x(e,r)     Use the value of _✓e  to     index    into  the
  1641.              range _✓r.  The string value at that posi-
  1642.              tion is returned.  The    value  1  selects
  1643.              the  first  item in the range,    2 selects
  1644.              the  second  item,  etc.   The     range    _✓r
  1645.              should     be either a single row    or a sin-
  1646.              gle column.
  1647.  
  1648.    N✓Nu✓um✓me✓er✓ri✓ic✓c F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1649.        All of these functions operate on floating  point  numbers
  1650.        (doubles)  and  return  numeric    values.     Most of them are
  1651.        standard    system functions more fully described in _✓m_✓a_✓t_✓h(3).
  1652.        The trig    functions operate with angles in radians.
  1653.  
  1654.        @✓@s✓sq✓qr✓rt✓t(e)         Return    the square root    of _✓e.
  1655.  
  1656.        @✓@e✓ex✓xp✓p(e)         Return    the exponential    function of _✓e.
  1657.  
  1658.        @✓@l✓ln✓n(e)         Return    the natural logarithm of _✓e.
  1659.  
  1660.        @✓@l✓lo✓og✓g(e)         Return    the base 10 logarithm of _✓e.
  1661.  
  1662.  
  1663.  
  1664.                                    26
  1665.  
  1666.  
  1667.  
  1668. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1669.  
  1670.  
  1671.        @✓@f✓fl✓lo✓oo✓or✓r(e)     Return     the  largest integer not greater
  1672.              than _✓e.
  1673.  
  1674.        @✓@c✓ce✓ei✓il✓l(e)         Return    the  smallest  integer    not  less
  1675.              than _✓e.
  1676.  
  1677.        @✓@r✓rn✓nd✓d(e)         Round     _✓e   to      the    nearest     integer.
  1678.              default: round-to-even    (banker's round),
  1679.              *.5  will round to the    closest    even num-
  1680.              ber;
  1681.  
  1682.        @✓@r✓ro✓ou✓un✓nd✓d(e,n)     Round _✓e to _✓n decimal places.  n  may  be
  1683.              positive  to round off    the right side of
  1684.              the decimal, and negative to  round  off
  1685.              the  left  side.  See    @rnd(e)    above for
  1686.              rounding types.
  1687.  
  1688.        @✓@a✓ab✓bs✓s(e)
  1689.        @✓@f✓fa✓ab✓bs✓s(e)         Return    the absolute value of _✓e.
  1690.        @✓@p✓po✓ow✓w(e1,e2)     Return    _✓e_✓1 raised to the power of _✓e_✓2.
  1691.        @✓@h✓hy✓yp✓po✓ot✓t(e1,e2)     Return    sqrt(e1*e1+e2*e2), taking precau-
  1692.              tions against unwarranted overflows.
  1693.        p✓pi✓i  @✓@p✓pi✓i         A constant quite close    to pi.
  1694.        @✓@d✓dt✓tr✓r(e)         Convert _✓e in degrees to radians.
  1695.        @✓@r✓rt✓td✓d(e)         Convert _✓e in radians to degrees.
  1696.        @✓@s✓si✓in✓n(e)
  1697.        @✓@c✓co✓os✓s(e)
  1698.        @✓@t✓ta✓an✓n(e)         Return    trigonometric functions    of radian
  1699.              arguments.  The magnitude of  the  argu-
  1700.              ments are not checked to assure meaning-
  1701.              ful results.
  1702.  
  1703.        @✓@a✓as✓si✓in✓n(e)         Return    the arc    sine of    _✓e  in  the  range
  1704.              -pi/2 to pi/2.
  1705.  
  1706.        @✓@a✓ac✓co✓os✓s(e)         Return     the arc cosine    of _✓e in    the range
  1707.              0 to pi.
  1708.  
  1709.        @✓@a✓at✓ta✓an✓n(e)         Return    the arc    tangent    of _✓e in    the range
  1710.              -pi/2 to pi/2.
  1711.  
  1712.        @✓@a✓at✓ta✓an✓n2✓2(e1,e2)     Returns  the arc tangent of _✓e_✓1/_✓e_✓2 in the
  1713.              range -pi to pi.
  1714.  
  1715.        @✓@m✓ma✓ax✓x(e1,e2,...)     Return    the maximum of the values of  the
  1716.              expressions.    Two  or     more expressions
  1717.              may be    specified.  See     also  the  range
  1718.              version of _✓@_✓m_✓a_✓x above.
  1719.  
  1720.        @✓@m✓mi✓in✓n(e1,e2,...)     Return     the minimum of    the values of the
  1721.              expressions.  Two  or    more  expressions
  1722.              may  be  specified.   See also    the range
  1723.              version of _✓@_✓m_✓i_✓n above.
  1724.  
  1725.  
  1726.  
  1727.  
  1728.                                    27
  1729.  
  1730.  
  1731.  
  1732. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1733.  
  1734.  
  1735.        @✓@s✓st✓to✓on✓n(se)     Convert  string  expression  _✓s_✓e   to    a
  1736.              numeric value.
  1737.  
  1738.        @✓@e✓eq✓qs✓s(se1,se2)     Return     1  if    string expression _✓s_✓e_✓1 has
  1739.              the same value    as string expression _✓s_✓e_✓2,
  1740.              0 otherwise.
  1741.  
  1742.        @✓@n✓nv✓va✓al✓l(se,e)     Return     the  numeric  value  of  a  cell
  1743.              selected by name.  String expression  _✓s_✓e
  1744.              must    evaluate   to    a   column   name
  1745.              (``A''-``ZZ'')    and _✓e must evaluate to    a
  1746.              valid    row number (The    number of rows is
  1747.              system    dependant).  If    _✓s_✓e or _✓e    is out of
  1748.              bounds,  or  the  cell     has  no  numeric
  1749.              value,    the result is  0.   You     can  use
  1750.              this  for simple table    lookups.  Be sure
  1751.              the  table  doesn't  move  unexpectedly!
  1752.              See also _✓@_✓s_✓v_✓a_✓l() below.
  1753.  
  1754.    S✓St✓tr✓ri✓in✓ng✓g F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1755.        @✓@s✓su✓ub✓bs✓st✓tr✓r(se,e1,e2) Extract  and  return from string expres-
  1756.              sion _✓s_✓e the substring indexed by charac-
  1757.              ter  number  _✓e_✓1 through character number
  1758.              _✓e_✓2 (defaults to the size of _✓s_✓e    if beyond
  1759.              the end of it).  If _✓e_✓1    is less    than 1 or
  1760.              greater than _✓e_✓2, the result is    the  null
  1761.              string.  For example,
  1762.  
  1763.                    @substr ("Nice jacket", 4, 7)
  1764.  
  1765.              returns the string ``e    jac''.
  1766.  
  1767.        @✓@f✓fm✓mt✓t(se,e)     Convert a number to a string.    The argu-
  1768.              ment _✓s_✓e must be a valid _✓p_✓r_✓i_✓n_✓t_✓f(3) format
  1769.              string.  _✓e is converted according to the
  1770.              standard  rules.    For   example,   the
  1771.              expression
  1772.  
  1773.                    @fmt ("**%6.3f**", 10.5)
  1774.  
  1775.              yields     the string ``**10.500**''.  _✓e is
  1776.              a double, so applicable formats  are  e,
  1777.              E,  f,    g, and G.  Try ``%g'' as a start-
  1778.              ing point.
  1779.  
  1780.        @✓@s✓sv✓va✓al✓l(se,e)     Return     the  string  value  of     a   cell
  1781.              selected  by name.  String expression _✓s_✓e
  1782.              must    evaluate   to    a   column   name
  1783.              (``A''-``ZZ'')     and _✓e must evaluate to    a
  1784.              valid row number (The number of rows  is
  1785.              system    dependant).  If    _✓s_✓e or _✓e    is out of
  1786.              bounds, or the    cell has no string value,
  1787.              the  result is    the null string.  You can
  1788.              use this for simple table  lookups.   Be
  1789.  
  1790.  
  1791.  
  1792.                                    28
  1793.  
  1794.  
  1795.  
  1796. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1797.  
  1798.  
  1799.              sure  the  table  doesn't move    unexpect-
  1800.              edly!
  1801.  
  1802.        @✓@u✓up✓pp✓pe✓er✓r(e)     and @✓@l✓lo✓ow✓we✓er✓r(e)    will  change  the  string
  1803.              expression to upper or    lower case.
  1804.  
  1805.        @✓@c✓ca✓ap✓pi✓it✓ta✓al✓l(e)     will  convert    the first letter of words
  1806.              in a string into upper     case  and  other
  1807.              letters to lower case (the latter if all
  1808.              letters of the    string are upper case).
  1809.  
  1810.        @✓@e✓ex✓xt✓t(se,e)     Call an external  function  (program  or
  1811.              script).   The    purpose    is to allow arbi-
  1812.              trary functions on  values,  e.g.  table
  1813.              lookups   and     interpolations.   String
  1814.              expression _✓s_✓e is a  command  or  command
  1815.              line  to  call    with _✓p_✓o_✓p_✓e_✓n(3).    The value
  1816.              of  _✓e    is  converted  to  a  string  and
  1817.              appended to the command line as an argu-
  1818.              ment.    The result of _✓@_✓e_✓x_✓t() is    a string:
  1819.              the  first line printed to standard out-
  1820.              put by    the command.  The command  should
  1821.              emit  exactly    one  output  line.  Addi-
  1822.              tional    output,     or  output  to     standard
  1823.              error,     messes     up  the  screen.  _✓@_✓e_✓x_✓t()
  1824.              returns a  null  string  and  prints  an
  1825.              appropriate  warning  if  external func-
  1826.              tions are disabled, _✓s_✓e    is null,  or  the
  1827.              attempt to run    the command fails.
  1828.  
  1829.              External  functions  can be slow to run,
  1830.              and if    enabled    are called at each screen
  1831.              update, so they are disabled by default.
  1832.  
  1833.              A simple example:
  1834.  
  1835.                    @ext ("echo", a1)
  1836.  
  1837.              You  can  use    _✓@_✓s_✓t_✓o_✓n()     to  convert  the
  1838.              _✓@_✓e_✓x_✓t()     result     back  to  a number.  For
  1839.              example:
  1840.  
  1841.                    @ston (@ext ("form.sc.ext",  a9    +
  1842.              b9))
  1843.  
  1844.              Note  that  you can built a command line
  1845.              (including more argument values) from    a
  1846.              string     expression  with  concatenation.
  1847.              You can also "hide" the second     argument
  1848.              by  ending the    command    line (first argu-
  1849.              ment) with `` #'' (shell comment).
  1850.  
  1851.        @✓@c✓co✓ol✓lt✓to✓oa✓a(e)     Returns a string name for a column  from
  1852.              the numeric argument.    For example:
  1853.  
  1854.  
  1855.  
  1856.                                    29
  1857.  
  1858.  
  1859.  
  1860. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1861.  
  1862.  
  1863.                    @coltoa(@mycol-1)
  1864.                    @nval(coltoa(@mycol-1), @myrow+1)
  1865.  
  1866.  
  1867.  
  1868.    F✓Fi✓in✓na✓an✓nc✓ci✓ia✓al✓l F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1869.        Financial functions compute the mortgage     (or  loan)  pay-
  1870.        ment, future value, and the present value functions.  Each
  1871.        accepts three arguments,    an amount,  a  rate  of     interest
  1872.        (per  period), and the number of    periods.  These    functions
  1873.        are the same as those commonly found in other spreadsheets
  1874.        and financial calculators
  1875.  
  1876.        @✓@p✓pm✓mt✓t(e1,e2,e3)     _✓@_✓p_✓m_✓t(60000,.01,360) computes the monthly
  1877.              payments for a    $60000    mortgage  at  12%
  1878.              annual     interest  (.01    per month) for 30
  1879.              years (360 months).
  1880.  
  1881.        @✓@f✓fv✓v(e1,e2,e3)     _✓@_✓f_✓v(100,.005,36)  computes  the   future
  1882.              value for of 36 monthly payments of $100
  1883.              at 6% interest     (.005    per  month).   It
  1884.              answers  the  question: "How much will    I
  1885.              have in 36 months if I    deposit    $100  per
  1886.              month    in  a  savings    account    paying 6%
  1887.              interest compounded monthly?"
  1888.  
  1889.        @✓@p✓pv✓v(e1,e2,e3)     _✓@_✓p_✓v(1000,.015,36) computes  the  present
  1890.              value    of  an    a  ordinary annuity of 36
  1891.              monthly payments of $1000 at 18%  annual
  1892.              interest.  It answers the question: "How
  1893.              much can I borrow at 18% for 30 years if
  1894.              I pay $1000 per month?"
  1895.  
  1896.    D✓Da✓at✓te✓e    a✓an✓nd✓d T✓Ti✓im✓me✓e F✓Fu✓un✓nc✓ct✓ti✓io✓on✓ns✓s
  1897.        Time  for  _✓s_✓s  follows  the system standard: the    number of
  1898.        seconds since 1970.  All    date and  time    functions  except
  1899.        _✓@_✓d_✓a_✓t_✓e() return numbers, not strings.
  1900.  
  1901.        @✓@n✓no✓ow✓w         Return     the  current time encoded as the
  1902.              number    of seconds since the beginning of
  1903.              the  epoch (December 31, 1969,    midnight,
  1904.              GMT.)
  1905.  
  1906.        @✓@d✓dt✓ts✓s(e1,e2,e3)     _✓@_✓d_✓t_✓s(9,14,1988)   converts   the    date
  1907.              September 14, 1988 to the number of sec-
  1908.              onds from the epoch to    the first  second
  1909.              of  9/14/88,  local  time.  For example,
  1910.              _✓@_✓d_✓a_✓t_✓e(_✓@_✓d_✓t_✓s(12,14,1976)) yields
  1911.  
  1912.                    _✓T_✓u_✓e _✓D_✓e_✓c _✓1_✓4 _✓0_✓0_✓:_✓0_✓0_✓:_✓0_✓0 _✓1_✓9_✓7_✓6
  1913.  
  1914.              The month should be range from     1 to 12,
  1915.              the  day should range from 1 to the num-
  1916.              ber of    days in    the specified month,  and
  1917.  
  1918.  
  1919.  
  1920.                                    30
  1921.  
  1922.  
  1923.  
  1924. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1925.  
  1926.  
  1927.              the year should range from 1970 to 1999.
  1928.              (Hey!    That isnt't that far  off!   What
  1929.              then?    ;-)
  1930.  
  1931.        @✓@t✓tt✓ts✓s(e1,e2,e3)     _✓@_✓t_✓t_✓s(8,20,45)    converts the time 8:40:45
  1932.              to the    number of seconds since    midnight,
  1933.              the night before.  The    hour should range
  1934.              from 0    to 23; the  minutes  and  seconds
  1935.              should    range from 0 to    59.
  1936.  
  1937.        The  following  functions  take    the time in seconds (e.g.
  1938.        from _✓@_✓n_✓o_✓w) as an    argument and return the    specified  value.
  1939.        The functions all convert from GMT to local time.
  1940.  
  1941.        @✓@d✓da✓at✓te✓e(e)         Convert  the  time  in    seconds    to a date
  1942.              string    24 characters long in the follow-
  1943.              ing form:
  1944.  
  1945.                    _✓S_✓u_✓n _✓S_✓e_✓p _✓1_✓6 _✓0_✓1_✓:_✓0_✓3_✓:_✓5_✓2 _✓1_✓9_✓7_✓3
  1946.  
  1947.              Note  that you    can extract parts of this
  1948.              fixed-format string with _✓@_✓s_✓u_✓b_✓s_✓t_✓r().
  1949.  
  1950.        @✓@y✓ye✓ea✓ar✓r(e)         Return    the year.  Valid years begin with
  1951.              1970.     The  last  legal  year    is system
  1952.              dependent.
  1953.  
  1954.        @✓@m✓mo✓on✓nt✓th✓h(e)     Return    the month, encoded as 1    (January)
  1955.              to 12 (December).
  1956.  
  1957.        @✓@d✓da✓ay✓y(e)         Return     the day of the    month, encoded as
  1958.              1 to 31.
  1959.  
  1960.        @✓@h✓ho✓ou✓ur✓r(e)         Return    the number of  hours  since  mid-
  1961.              night,    encoded    as 0 to    23.
  1962.  
  1963.        @✓@m✓mi✓in✓nu✓ut✓te✓e(e)     Return     the  number of    minutes    since the
  1964.              last full hour, encoded as 0 to 59.
  1965.  
  1966.        @✓@s✓se✓ec✓co✓on✓nd✓d(e)     Return    the number of seconds  since  the
  1967.              last full minute, encoded as 0    to 59.
  1968.  
  1969. S✓SE✓EE✓E A✓AL✓LS✓SO✓O
  1970.        bc(1), dc(1), crypt(1), pss(1), sc(1)
  1971.  
  1972. B✓BU✓UG✓GS✓S
  1973.        Top-to-bottom,  left-to-right evaluation    of expressions is
  1974.        silly.  A proper    following of the  dependency  graph  with
  1975.        (perhaps) recourse to relaxation    should be implemented.
  1976.  
  1977.        Only  one previous value    is saved from any call of _✓@_✓e_✓x_✓t().
  1978.        If it is    used more than once in a spreadsheet and external
  1979.        functions   are    enabled     and  later  disabled,    the  last
  1980.        returned    value pops up in several places.
  1981.  
  1982.  
  1983.  
  1984.                                    31
  1985.  
  1986.  
  1987.  
  1988. SS 1.3.3 (1)                         SS    1.3.3 (1)
  1989.  
  1990.  
  1991.        On some systems,    if the cell cursor is in  column  0  with
  1992.        topline    enabled     (so the current cell is highlighted), or
  1993.        if any cell in column 0 is highlighted, the  corresponding
  1994.        row number gets displayed and then blanked during a screen
  1995.        refresh.     This looks like a bug in _✓c_✓u_✓r_✓s_✓e_✓s.
  1996.  
  1997.        Many commands give no indication    (a message  or    beep)  if
  1998.        they  have  null    effect.     Some should give confirmation of
  1999.        their action, but they don't.
  2000.  
  2001. A✓AU✓UT✓TH✓HO✓OR✓RS✓S
  2002.        This is a much modified version of a public domain  spread
  2003.        sheet  originally  authored  by    James Gosling, and subse-
  2004.        quently modified    and posted to USENET by    Mark Weiser under
  2005.        the name    _✓v_✓c.
  2006.  
  2007.        The program was subsequently renamed _✓s_✓c,    and further modi-
  2008.        fied by numerous    contributors,  Jeff  Buhrt  of    Proslink,
  2009.        Inc.   ({sequent,  uunet}!sawmill!prslnk!buhrt) and Robert
  2010.        Bond of Sequent,    prominent among    them.
  2011.  
  2012.        Finally,    Art Mulder (  art@cs.ualberta.ca  )  -in  one  of
  2013.        those  classic  ``it seemed like    a good idea at the time''
  2014.        moves - took _✓s_✓c version 6.19 and    radically overhauled  its
  2015.        user interface, to create _✓s_✓s.
  2016.  
  2017.        Apologies  are freely offered to    all _✓s_✓c adherents offended
  2018.        by what has been    done to    ``their'' program.
  2019.  
  2020. C✓CO✓OP✓PY✓YR✓RI✓IG✓GH✓HT✓T
  2021.        Copyright (c) 1992,1993 by Arthur E. Mulder.
  2022.  
  2023.        All Rights Reserved
  2024.  
  2025.        Permission to use, copy,    modify,    and distribute this soft-
  2026.        ware and    its documentation for any purpose and without fee
  2027.        is hereby  granted,  provided  that  the     above    copyright
  2028.        notice  appears in all copies and that both that    copyright
  2029.        notice and this permission  notice  appear  in  supporting
  2030.        documentation,  and that    the names of any persons or orga-
  2031.        nizations involved not be used in advertising or    publicity
  2032.        pertaining  to  distribution  of    the software without spe-
  2033.        cific, written prior permission.
  2034.  
  2035.        ALL PERSONS AND ORGANIZATIONS INVOLVED IN THE CREATION  OF
  2036.        THIS  SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  2037.        SOFTWARE,  INCLUDING  ALL  IMPLIED  WARRANTIES    OF   MER-
  2038.        CHANTABILITY  AND  FITNESS.  IN NO EVENT    SHALL ANY OF THEM
  2039.        BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL  DAM-
  2040.        AGES OR ANY DAMAGES WHATSOEVER RESULTING    FROM LOSS OF USE,
  2041.        DATA OR PROFITS,    WHETHER    IN AN ACTION OF    CONTRACT,  NEGLI-
  2042.        GENCE  OR OTHER TORTIOUS    ACTION,    ARISING    OUT OF OR IN CON-
  2043.        NECTION WITH THE    USE OR PERFORMANCE OF THIS SOFTWARE.
  2044.  
  2045.  
  2046.  
  2047.  
  2048.                                    32
  2049.  
  2050.  
  2051.  
  2052. SS 1.3.3 (1)                         SS    1.3.3 (1)
  2053.  
  2054.  
  2055.        Translation: I'm    not trying to restrict anyone's    free  use
  2056.        of ``ss'', I just don't want anyone turning around and (a)
  2057.        claiming    that they wrote    it or (b) selling it.
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.                                    33
  2113.